3
Дек

Скрипт мониторинга доступности портов в сети с уведомлением на email (bash) — для QNAP

Так уж вышло, что живем мы хоть и в продвинутой всякими технологиями стране, но стабильность интернет соединения для городов которые в дали от столицы это редкое явление. Долго выбирал всевозможные сервисы для профессионального мониторинга доступности оборудования в сети. У одних есть проверка только 80 порта веб-сервера, у других возможно проверить ключевое слово на странице, отправлять GET или POST запросы. Нашел сервис лучше других, есть там возможность проверить доступность ssh, но оплата зависит от количества запросов за определенный промежуток времени и естественно количество оборудования которое необходимо мониторить.

Но наткнулся на хороший скрипт Мониторинг портов с уведомлением сисадмина, естественно на хабре. Но как писал выше, стабильность нашего интернета давала некоторую неточность в определении доступности тех или иных серверов в глобальной сети, поэтому я несколько изменил и доработал предложенный скрипт.

— Скрипт начал отсылать не только письмо о недоступности порта, но и появлении его в сети.
— Скрипт присылает на почту письмо и записывает в лог время, количество ошибок при проверке и предыдущее состояние проверки.
— Скрипт присылает на почту письмо только в том случае, если было пять неудачных попыток соединения либо пять удачных после недоступности.
— Скрипт не присылает письмо если в месте расположения скрипта пропал интернет
— Скрипт можно запускать каждую минуту

#!/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: [email protected]" >> "$CATALOG"mail
echo "To: [email protected]" >> "$CATALOG"mail
echo "CC: [email protected]" >> "$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 > "$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 
      cat /dev/null > "$CATALOG"serverlist_n
      exit 1 
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
cat /dev/null > "$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, то такое письмо помечается красным флажком в списке писем папки Входящие, а копия отправляется на телефон в виде смс по адресу [email protected].
В тарифе Киевстар (Beeline UA) возможно получение 150 sms и 50 mms ежемесячно за 7 копеек сутки.

Скрипт мониторинга можно запускать по cron на роутере, спутниковом ресивере под управлением ОС Linux или на NAS накопителе. В данном случае скрипт запущен на NAS накопителе QNAP TS-419PII
В итоге получаем ежеминутный мониторинг всех ваших серверов почти даром.

В отступлении хочу написать, если уже подключен сервис «Получение SMS/MMS с e-mail» в сети Киевстар, можно также создать фильтр по слову mms в теме письма и получать сообщения общим объемом до 1 Мб без платы отправителя за mms.

Обратная связь

    The average number of adverse effects was 3. T max is 23 minutes in females and 32 minutes in males. What other drugs will affect doxercalciferol Viagra natural sin receta. Archived from the original on 2009-08-14.

    Talk to your doctor before using this form of cefadroxil if you have diabetes. What should I tell my healthcare team before starting CABLIVI? There is no FDA guidance on the use of Tetracycline (oral) with respect to specific gender populations https://www.apotheke-rezeptfreie.com/. Opper K, Uder S, Song K Development of Heterogeneous and Homogeneous Platforms for Rapid Analysis of DNA-Protein Interactions.