Pull to refresh

Мониторинг портов с уведомлением сисадмина

Reading time 2 min
Views 11K
imageНедавно возникла потребность в периодическом мониторинге серваков на предмет падения некоторых сервисов (читай портов) и уведомления админа (те меня) при возникновении ошибки.

Решение — под катом

Итак что мы несколько серваков, кучу портов. проверяем порт на открытость классически — nmap'ом
пример вывода:

firewall:~/scripts# nmap 192.168.1.1 -p3389
Starting Nmap 4.11 ( www.insecure.org/nmap ) at 2009-05-06 14:54 GMT-4
Interesting ports on 192.168.1.1:
PORT STATE SERVICE
3389/tcp open ms-term-serv
MAC Address: 00:50:8D:EB:7E:08 (Abit Computer)

Nmap finished: 1 IP address (1 host up) scanned in 0.132 seconds

это значит что сервер терминалов поднят, и скорее всего работает :)
если вместо опен будет написано чтото иное — соответственно косяк, надо сообщать.

Долго придумывал систему сообщения. Пришел от сложнейшего — к простейшему. У пчелайна есть такой сервис mailtosms, если на ящик формата 890912345678@sms.beemail.ru отправить письмо — то оно одойдет смской содержащей текст письма.

итак задача — из списка серваков и портов сканить все подряд и что не открыто — выписывать в отдельный файл и отправлять нам на мыло.

что получилось:
#!/bin/bash
for a in $(<servers)do nmap `echo $a | sed -e 's/:/ -p /'` | grep -q "/tcp *open " || echo $adone > /var/test/serverlist;
DATENOW=$(date +%d-%m-%Y_%T)
if (!( [ -z $(cat /var/test/serverlist) ]))then
echo $DATENOW >> /var/test/log
cat /var/test/serverlist >> /var/test/log
mail 7909*******@sms.beemail.ru < /var/test/serverlist
fi
exit


Как это работает?
создаем файл servers, ложим рядом с самим скриптом.
содержание файла servers примерно такое:
192.168.1.1:80
192.168.1.2:25
192.168.1.3:110

Ну в общем понятно
команда sed -e 's/:/ -p /'` заменяет ":" на "-p"
for a in $(<servers); do nmap `echo $a | sed -e 's/:/ -p /'` — скармливает резултаты nmap'у
grep -q "/tcp *open " || echo $a; done > /var/test/serverlist; — выдирает строки если порт не открыт и толкает их в файл serverlist
после чего файл проверяется на наличие в нем чего либо и если там чтото есть, это пишется в лог (для отладки) и отправляется на мыло/телефон одмина.
вуаля. добавляем в кронтаб, раз в час (чтобы не напрягало) и пользуемся

ЗЫЖ я знаю что есть вещи типа nagios и прочие мониторы сети, но они слишком мощны и сложны в конфигурировании когда достаточно просто просканить порты нескольких серваков.
Tags:
Hubs:
+20
Comments 63
Comments Comments 63

Articles