На одному з сєверов корпоративної мережі виявилися проблеми з запуском служби SNMP. При спробі запуску SNMP з’являлася наступна помилка:
“Служба SNMP на локальному комп’ютері запустилася, а потім зупинилася”
І в журналі системи з’являлося подія з Event ID 7036.
Крім того, при спробі перевстановити або встановити службу SNMP за допомогою майстра RemoveWindowsComponents, з’являлася наступне попередження:
«Одна або кілька служб для компонента Протоколу простого управління мережею зайняли більше часу, ніж їм було відведено. Встановлення триватиме, але послуги будуть недоступні, поки вони не розпочнуться повністю »
У тому випадку, якщо натиснути кнопку “Продовжуйте“, установка продовжиться і закінчиться, проте при спробі запуску сервісу SNMP, проблема не усувається.
Як виявилося, причина такої поведінки служби SNMP, полягає в тому, що якесь додаток або служба вже використовує порт, який зазвичай використовує служба SNMP. Стандартний порт служби SNMP – UDP 161. Для визначення того, яка ж служба використовує цей порт, я виконав наступні дії:
1) Шукаємо ID процесу, слухача на 161 порту UDP
Відкриємо командний рядок і наберемо: “Netstat -рік” (Я вже описував як за допомогою netstat визначити порт, який використовується додатком)
В результаті виконання команди шукаємо ідентифікатор (ID) процесу, слухача 161 UDP порт (рядок UDP 0.0.0.0:161). Саме цей процес заважає нормальному запуску служби SNMP.
2) З допомогою диспетчера задач визначаємо виконуваний файл цікавить нас процесу
Відкрийте “Windows Task Manager”, в меню “View” виберіть пункт “Select Columns” (вибрати стовпчики), і відзначте галочкою “ПІД (Ідентифікатор процесу) ”.
Тепер в диспетчері завдань навпроти кожного процесу вказано його PID.
Залишилося просто впорядкувати процеси по PID, клацнувши по заголовку колонки “PID”, і знайти процес, PID якого ми визначили за допомогою команди “netstat – рік“.
В результаті ми повинні отримати ім’я виконуваного exe-файлу, що використовує 161 порт UDP, який зазвичай використовується процесів SNMP.EXE. Саме цей процес заважає запуску служби SNMP.
3) За допомогою Tasklist знайдемо службу і зупинимо її
Досить часто різні додатки виконуються у вигляді служб, тому розглянемо ситуацію, в якій би запуску служби SNMP заважала б інша служба, яка заснована на виконуваному файлі, знайденому в другому кроці.
У командному рядку наберіть: “Список завдань / svc“. В результаті ви побачите список всіх служб і асоційованих з ними виконуваних файлів. Команда “tasklist / svc” виводить приблизно наступне:
Після того, як ви визначили ім’я служби, то за допомогою оснастки “Послуги.msc“, ви можете зупинити її. А потім можна вручну запустити службу SNMP Service.
Природно, не забудьте розібратися, що за службу ви зупинили, звідки вона взялася і для чого потрібна!
Наведена методика може використовуватися для визначення портів, використовуваних тією або іншою службою Windows, або додатком.