Como faço para instalar, configurar e manter remotamente o SNMP?

7

Estou procurando instalar remotamente os serviços do provedor SNMP e SNMP WMI no Windows Server 2008 R2, configurar opções específicas para as guias Agente, Armadilhas e Segurança e, em seguida, verificar se esses serviços e configurações não foram removidos ou desativados . Esse objetivo é precipitado pelo desejo de monitorar remotamente a integridade do servidor com o Zenoss.

Por meio de minhas pesquisas on-line, sinto que isso pode ser conseguido com o Powershell e depois descartado pela Diretiva de Grupo, mas sou muito novo nisso e é um pouco confuso; Eu também posso estar errado.

Alguns dos meus servidores são Enterprise, enquanto alguns são Standard, todos são R2. Eu suponho que terei que instalar o SP1, .Net 4.0 e Powershell 3.0 para todos os servidores para ganhar paridade e confiabilidade em qualquer script.

Até agora, consegui escrever um script para o Powershell chamar o DISM para instalar o serviço SNMP e definir esse script como um script de logon no GPO, mas sei que essa não é a melhor maneira de fazer isso, já que posso Basta ir reiniciando servidores em toda a empresa.

Eu preciso especificar os seguintes itens: Agente - contato e localização Armadilhas - nome da comunidade e destino da armadilha Segurança - enviar autenticação trap = yes, nome da comunidade aceito READ ONLY e aceitar traps SNMP de qualquer host = yes

Qualquer ajuda seria muito apreciada!

    
por user236557 28.02.2014 / 22:54

1 resposta

8

O SNMP é velho e duro. A Microsoft colocou seu mecanismo SNMP em status obsoleto, portanto espere nem vê-lo incluído em novas versões do Windows.

Isso também parece ser um trabalho perfeito para a nova Configuração de Estado Desejado do Powershell, mas o DSC é complexo. É um compromisso relativamente pesado em aprender, configurar um servidor pull, atualizar o PowerEhell em toda a empresa, etc.

Se eu fosse executar um script em cada máquina para verificar se o SNMP estava instalado ou não, e instalá-lo se não fosse, poderia fazer algo assim:

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

Você pode distribuir esse script como quiser, como um script de inicialização, talvez. Ou talvez percorrer um loop de todos os computadores de um computador central e executar a instalação remotamente.

O bit de configuração não é muito glamoroso. Como eu disse, o SNMP está obsoleto, então a Microsoft não gastará energia criando um monte de Cmdlets para o serviço SNMP.

Mas a configuração é apenas as configurações do registro. Você pode exportar o arquivo HKLM\SYSTEM\CurrentControlSet\services\SNMP\Parameters * .reg de uma máquina configurada e distribuir esse arquivo * .reg para outras máquinas via GPO ou script de inicialização.

Ou você poderia adotar uma abordagem mais direta como esse cara: link

Do link do 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"}

Então essa é a ideia. Você provavelmente quer gastar um pouco mais de tempo polindo e completando isso, mas existe o conceito.

Edit: Ah, e aqui está um documento MS muito legal sobre o gerenciamento de vários servidores remotamente via Powershell que tem algumas boas idéias: link

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
}
    
por 28.02.2014 / 23:20