Но наткнулся на хороший скрипт Мониторинг портов с уведомлением сисадмина, естественно на хабре. Но как писал выше, стабильность нашего интернета давала некоторую неточность в определении доступности тех или иных серверов в глобальной сети, поэтому я несколько изменил и доработал предложенный скрипт.
— Скрипт начал отсылать не только письмо о недоступности порта, но и появлении его в сети.
— Скрипт присылает на почту письмо и записывает в лог время, количество ошибок при проверке и предыдущее состояние проверки.
— Скрипт присылает на почту письмо только в том случае, если было пять неудачных попыток соединения либо пять удачных после недоступности.
— Скрипт не присылает письмо если в месте расположения скрипта пропал интернет
— Скрипт можно запускать каждую минуту
#!/bin/bash
CATALOG="/share/Web/"
NMAPCAT="/share/MD0_DATA/.qpkg/Optware/bin/"
WC="/mnt/ext/usr/bin/"
echo "Subject: Monitoring hosts sms" > "$CATALOG"mail
echo "From: send_from@mail.ru" >> "$CATALOG"mail
echo "To: send_to@mail.ru" >> "$CATALOG"mail
echo "CC: copy_to@gmail.com" >> "$CATALOG"mail
echo "" >> "$CATALOG"mail
for i in 1 2 3 4 5
do
for a in $(<"$CATALOG"servers); do "$NMAPCAT"nmap `echo $a | sed -e 's/:/ -p /'` | grep -q "/tcp *open " || echo $a; done >> "$CATALOG"serverlist_n;
sleep 5;
done
"$WC"sort -u "$CATALOG"serverlist_n | /bin/uniq -u > "$CATALOG"serverlist
if [[ $(cat "$CATALOG"serverlist_n | "$WC"wc -w) -ge 5 ]]
then
cat "$CATALOG"serverlist >> "$CATALOG"mail
echo "" >> "$CATALOG"mail
else
echo "All OK" >> "$CATALOG"mail
echo "" >> "$CATALOG"mail
fi
if [[ $(cat "$CATALOG"servers | "$WC"wc -w) -eq $(cat "$CATALOG"serverlist | "$WC"wc -w) ]]
then
echo "" > "$CATALOG"serverlist_n
fi
a=`expr $(cat "$CATALOG"serverlist_n | "$WC"wc -w) % 5`
b=`expr $(cat "$CATALOG"serverlist_old | "$WC"wc -w) % 5`
if [[ $(cat "$CATALOG"serverlist_old | "$WC"wc -w) -ne $(cat "$CATALOG"serverlist_n | "$WC"wc -w) && $a -eq 0 && $b -eq 0 ]]
then
cat "$CATALOG"serverlist_n | "$WC"wc -w >> "$CATALOG"mail
cat "$CATALOG"serverlist_old | "$WC"wc -w >> "$CATALOG"mail
cat "$CATALOG"mail | sendmail -t
echo "------------" >> "$CATALOG"log
DATENOW=$(date +%d-%m-%Y_%T)
echo $DATENOW >> "$CATALOG"log
cat "$CATALOG"serverlist >> "$CATALOG"log
cat "$CATALOG"serverlist_n | "$WC"wc -w >> "$CATALOG"log
cat "$CATALOG"serverlist_old | "$WC"wc -w >> "$CATALOG"log
echo "------------" >> "$CATALOG"log
fi
if [[ $a -eq 0 ]]
then
cat "$CATALOG"serverlist_n > "$CATALOG"serverlist_old
fi
echo "" > "$CATALOG"serverlist_n
exit
fi
CATALOG="/share/Web/" — Указать каталог где находится данный скрипт
NMAPCAT="/share/MD0_DATA/.qpkg/Optware/bin/" — Указать при необходимости расположение nmap
WC="/mnt/ext/usr/bin/" — Путь к приложению wc
Содержание файла servers такое:
192.168.1.1:80
192.168.1.2:25
192.168.1.3:110
В log получаем записи:
------------
29-12-2013_12:42:41
192.168.1.1:80
5
0
------------
------------
29-12-2013_12:58:19
192.168.1.1:80
192.168.1.2:25
10
5
------------
Хотелось бы добавить о возможности мониторинга и на sms.
Пользуясь в основном почтой mail.ru, настроил фильтр на прием писем так, что если в теме содержится слово sms, то такое письмо помечается красным флажком в списке писем папки Входящие, а копия отправляется на телефон в виде смс по адресу 38068594xxx2@sms.kyivstar.net.
В тарифе Киевстар (Beeline UA) возможно получение 150 sms и 50 mms ежемесячно за 7 копеек сутки.
Скрипт мониторинга можно запускать по cron на роутере, спутниковом ресивере под управлением ОС Linux или на NAS накопителе. В данном случае скрипт запущен на NAS накопителе QNAP TS-419PII
В итоге получаем ежеминутный мониторинг всех ваших серверов почти даром.
В отступлении хочу написать, если уже подключен сервис «Получение SMS/MMS с e-mail» в сети Киевстар, можно также создать фильтр по слову mms в теме письма и получать сообщения общим объемом до 1 Мб без платы отправителя за mms.
Это мой первый скрипт на bash, который я в течении недели много раз переделывал. Надеюсь на конструктивную критику и Ваши комментарии.
This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.
Комментариев нет:
Отправить комментарий