Как удаленно установить, настроить и поддерживать 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
}