web-dev-qa-db-ja.com

SNMPをリモートでインストール、構成、維持するにはどうすればよいですか?

Windows Server 2008 R2にSNMPおよびSNMP WMIプロバイダーサービスをリモートでインストールし、[エージェント]、[トラップ]、および[セキュリティ]タブの特定のオプションを構成して、これらのサービスと設定が削除またはオフになっていないことを確認します。この目標は、Zenossを使用してリモートでサーバーの状態を監視したいという欲求によって促進されます。

オンラインでの検索では、Powershellを使用してこれを実行し、グループポリシーを介してプッシュできると感じていますが、これは非常に新しいので少し混乱しています。私も間違っているかもしれません。

一部のサーバーはエンタープライズですが、一部は標準ですべてR2です。すべてのスクリプトで同等性と信頼性を得るためには、すべてのサーバーにSP1、.Net 4.0、Powershell 3.0をインストールする必要があると思います。

これまでのところ、PowershellがDISMを呼び出してSNMPサービスをインストールし、そのスクリプトをGPOのログオンスクリプトとして設定するためのスクリプトを作成することができましたが、私はこれを行うのが最善ではないことを知っています。企業全体でサーバーを再起動します。

次の項目を指定する必要があります。エージェント-連絡先と場所トラップ-コミュニティ名とトラップの宛先セキュリティ-認証トラップを送信=はい、受け入れられたコミュニティ名読み取り専用で、任意のホストからのSNMPトラップを受け入れる=はい

どんな助けでも大歓迎です!

7
user236557

SNMPは古くて無愛想です。マイクロソフトは、SNMPエンジンを非推奨のステータスに設定しているため、新しいバージョンのWindowsに含まれているとは思わないでしょう。

これはまた、Powershellの新しいDesired State Configurationに最適な仕事のように思えますが、DSCは複雑です。これは、学習、プルサーバーのセットアップ、企業全体でのPowersehellの更新などにおける比較的重い取り組みです。

すべてのマシンでスクリプトを実行して、SNMPがインストールされているかどうかを確認し、インストールされていない場合はインストールする場合は、次のようにします。

If($(Get-WindowsFeature SNMP-Service).Installed -EQ $False) 
    { Install-WindowsFeature SNMP-Service }

このスクリプトは、起動スクリプトとして好きなように配布できます。または、1台の中央コンピューターからすべてのコンピューターのループを実行し、リモートでインストールを実行することもできます。

構成ビットはそれほど魅力的ではありません。先ほど述べたように、SNMPは廃止されているため、MicrosoftはSNMPサービス用の一連のコマンドレットを作成するためにエネルギーを費やすことはありません。

ただし、構成は単なるレジストリ設定です。 HKLM\SYSTEM\CurrentControlSet\services\SNMP\Parameters構成済みのマシンから* .regファイルを作成し、GPOまたは起動スクリプトを介して他のマシンにその* .regファイルを配布します。

または、次のようなより直接的なアプローチを取ることもできます: http://poshcode.org/2066

Poshcodeリンクから:

$pmanagers = "ADD YOUR MANAGER(s)"
$commstring = "ADD YOUR COMM STRING"

Import-Module ServerManager

#Check If SNMP Services Are Already Installed
$check = Get-WindowsFeature | Where-Object {$_.Name -eq "SNMP-Services"}
If ($check.Installed -ne "True") {
    #Install/Enable SNMP Services
    Add-WindowsFeature SNMP-Services | Out-Null
}

##Verify Windows Servcies Are Enabled
If ($check.Installed -eq "True"){
    #Set SNMP Permitted Manager(s) ** WARNING : This will over write current settings **
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v 1 /t REG_SZ /d localhost /f | Out-Null
    #Used as counter for incremting permitted managers
    $i = 2
    Foreach ($manager in $pmanagers){
        reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\PermittedManagers" /v $i /t REG_SZ /d $manager /f | Out-Null
        $i++
        }
    #Set SNMP Community String(s)- *Read Only*
    Foreach ( $string in $commstring){
        reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SNMP\Parameters\ValidCommunities" /v $string /t REG_DWORD /d 4 /f | Out-Null
        }
}
Else {Write-Host "Error: SNMP Services Not Installed"}

それがアイデアです。もう少し時間をかけて完成させたいと思うかもしれませんが、コンセプトはあります。

編集:ああ、ここにPowerShell経由で複数のサーバーをリモートで管理することについてのかなりいいMSドキュメントがあり、それにはいくつかの良いアイデアがあります: http://technet.Microsoft.com/en-us/library/hh831809.aspx =

function Invoke-WindowsFeatureBatchDeployment {
    param (
        [parameter(mandatory)]
        [string[]] $ComputerNames,
        [parameter(mandatory)]
        [string] $ConfigurationFilePath
    )

    # Deploy the features on multiple computers simultaneously.
    $jobs = @()
    foreach($ComputerName in $ComputerNames) {
        $jobs += Start-Job -Command {
            Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart
        } 
    }

    Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult
}
8
Ryan Ries