На одному з сєверов корпоративної мережі виявилися проблеми з запуском служби 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, або додатком.