На одном из северов корпоративной сети обнаружились проблемы с запуском службы SNMP. При попытке запуска SNMP появлялась следующая ошибка:
“The SNMP Service service on Local Computer started and then stopped”
И в журнале системы появлялось событие с Event ID 7036.
Кроме того, при попытке переустановить или установить службу SNMP при помощи мастера RemoveWindowsComponents, появлялась следующее предупреждение:
“One or more services for the Simple Network Management Protocol component took more than their allotted time to start. The installation will continue but services will not be available until they have started completely”
В том случае, если нажать кнопку “Continue”, установка продолжится и закончится, однако при попытке запуска сервиса SNMP, ошибка сохранится.
Как оказалось, причина такого поведения службы SNMP, заключается в том, что некое приложение или служба уже использует порт, который обычно использует служба SNMP. Стандартный порт службы SNMP — UDP 161. Для определения того, какая же служба использует этот порт, я выполнил следующие действия:
1) Ищем ID процесса, слушающего на 161 порту UDP
Откроем командную строку и наберем: “Netstat –ano” (я уже описывал как при помощи netstat определить порт, используемый приложением)
В результате выполнения команды ищем идентификатор (ID) процесса, слушающего 161 UDP порт (строка UDP 0.0.0.0:161). Именно этот процесс мешает нормальному запуску службы SNMP.
2) С помощью диспетчера задач определяем исполняемый файл интересующего нас процесса
Откройте “Windows Task Manager”, в меню “View” выберите пункт “Select Columns” (выбрать столбцы), и отметьте галочкой “PID (Process Identifier)”.
Теперь в диспетчере задач напротив каждого процесса указан его PID.
Осталось просто отсортировать процессы по PID, щелкнув по заголовку колонки “PID”, и найти процесс, PID которого мы определили с помощью команды “netstat — ano”.
В результате мы должны получить имя исполняемого exe-файла, использующего 161 порт UDP, который обычно используется процессов SNMP.EXE. Именно этот процесс мешает запуску службы SNMP.
3) При помощи Tasklist найдем службу и остановим ее
Достаточно часто различные приложения выполняются в виде служб, поэтому рассмотрим ситуацию, в которой бы запуску службы SNMP мешала бы другая служба, которая основана на исполняемом файле, найденном во втором шаге.
В командной строке наберите: “Tasklist /svc”. В результате вы увидите список всех служб и ассоциированных с ними исполняемых файлов. Команда “tasklist /svc” выводит примерно следующее:
После того, как вы определили имя службы, то при помощи оснастки “Services.msc”, вы можете остановить ее. А затем можно вручную запустить службу SNMP Service.
Естественно, не забудьте разобраться, что за службу вы остановили, откуда она взялась и для чего нужна!
Приведенная методика может использоваться для определения портов, используемых той или иной службой Windows, или приложением.
Не в курсе куда подевалась служба SNMP в Win10 1809?
Ее даже в компонентах нет(.
Посмотрите есть ли такой компоент:
Get-WindowsCapability -Online | ? Name -like 'SNMP.Client*'
Если есть, установите его:
Add-WindowsCapability -Online -Name "SNMP.Client~~~~0.0.1.0"
Получилось только как DISM /online /add-capability /capabilityname:SNMP.Client~~~~0.0.1.0
Непонятно зачем так сложно сделано(.