Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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-файл на другие машины через GPO или сценарий запуска.

Или вы могли бы использовать более прямой подход, как этот парень: 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"}

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

Изменить: О, и вот довольно хороший документ 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
}