Как удаленно установить, настроить и поддерживать SNMP?

Я хочу удаленно установить службы поставщика SNMP и SNMP WMI на Windows Server 2008 R2, настроить конкретные параметры для вкладок "Агент", "Ловушки" и "Безопасность", а затем убедиться, что эти службы и параметры не удалены и не отключены. Эта цель обусловлена ​​желанием удаленно контролировать состояние сервера с помощью Zenoss.

Благодаря моим поискам в Интернете я чувствую, что это можно сделать с помощью Powershell, а затем вытолкнуть с помощью групповой политики, но я очень новичок в этом, и это немного сбивает с толку; Я тоже могу ошибаться.

Некоторые из моих серверов являются корпоративными, а некоторые стандартными, все являются R2. Я предполагаю, что мне придется установить SP1, .Net 4.0 и Powershell 3.0 для всех серверов, чтобы получить четность и надежность в любых сценариях.

До сих пор я был в состоянии написать сценарий для Powershell для вызова DISM для установки службы SNMP и установки этого сценария в качестве сценария входа в систему в GPO, но я знаю, что это не лучший способ сделать это, так как я не могу просто пойти перезагрузка серверов по всему предприятию.

Мне нужно указать следующие элементы: Агент - ловушки контактов и местоположений - имя сообщества и назначение ловушек. Безопасность - отправлять аутентификационную ловушку = да, принято имя сообщества ТОЛЬКО ЧИТАТЬ и принимать ловушки SNMP с любого хоста = да.

Любая помощь будет принята с благодарностью!

1 ответ

SNMP старый и хрустящий. Microsoft поставила их SNMP-движок в устаревшее состояние, поэтому не ожидайте, что он будет включен в новые версии Windows.

Это также звучит так, как будто это была бы идеальная работа для новой конфигурации требуемого состояния Powershell, но DSC сложен. Это довольно сложное занятие в обучении, настройке сервера извлечения, обновлении Powersehell на предприятии и т. Д.

Если бы мне нужно было запустить скрипт на каждой машине, чтобы проверить, был ли установлен SNMP или нет, и установить его, если это не так, я мог бы сделать что-то вроде этого:

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

Вы можете распространять этот скрипт по своему усмотрению, возможно, как сценарий запуска. Или, может быть, запустить цикл всех компьютеров с одного центрального компьютера и выполнить установку удаленно.

Конфигурация немного не очень гламурная. Как я уже сказал, SNMP устарел, поэтому Microsoft не собирается тратить энергию на создание группы командлетов для службы SNMP.

Но конфигурация это просто настройки реестра. Вы можете экспортировать HKLM\SYSTEM\CurrentControlSet\services\SNMP\Parameters Файл *.reg с настроенного компьютера и распространите этот файл *.reg на другие компьютеры с помощью объекта групповой политики или сценария запуска.

Или вы можете использовать более прямой подход, как этот парень: http://poshcode.org/2066

Из почтовой ссылки:

$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"}

Так что это идея. Вы, вероятно, хотите потратить немного больше времени на полировку и завершение этого, но есть концепция.

Изменить: О, и вот довольно хороший документ MS об удаленном управлении несколькими серверами с помощью Powershell, в котором есть несколько хороших идей: 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
}
Другие вопросы по тегам