Pull to refresh

Скрипт для мониторинга портов серверов и уведомление админа

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

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

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

firewall:~/scripts# nmap 192.168.1.1 -p3389
Starting Nmap 4.11 ( http://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 $a; done > /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
после чего файл проверяется на наличие в нем чего либо и если там чтото есть, это пишется в лог (для отладки) и отправляется на мыло/телефон одмина.
вуаля. добавляем в кронтаб, раз в час (чтобы не напрягало) и пользуемся

ЗЫЖ я знаю что есть вещи типа naagios и прочие мониторы сети, но они слишком мощны и сложны в конфигурировании когда достаточно просто просканить порты нескольких серваков.
всем спасибо, очень надеюсь на инвайт
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.