20 июня 2018 г.

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

#!/bin/bash
# https://www.mynote.pp.ua
#
# Скрипт в бесконечном цикле пингует удалённый хост в инете с интервалом 60 сек
# при первой удачной или неудачной попытке пинга пишется соответствующее сообщение в лог
# следующая запись в лог делается только при изменении состояния связи
# инициализация переменной результата, по умолчанию считается, что связь уже есть
#допилена отправка смс через smstools
result=connected
# смена текущего каталога перед записью лога
cd /var/log
echo `date +%Y.%m.%d__%H:%M:%S`' Автоматический запуск скрипта при загрузке сервера' >> inet.log
# бесконечный цикл
while [ true ]; do
    # пинг google.com с последующей проверкой на ошибки
    errorscount="$(ping -c 3 google.com 2<&1| grep -icE 'unknown|expired|unreachable|time out')"
    # если предыдущий пинг был удачен, а текущий нет, т.е. вывод ping содержит ошибки, то
    if [ "$result" = connected -a "$errorscount" != 0 ]; then
    # запоминаем результат текущего пинга
    result=disconnected
    # и пишем в лог время разрыва соединения
    echo `date +%Y.%m.%d__%H:%M:%S`' * Cвязь отсутствует' >> inet.log
    /usr/local/bin/sendsms 380951234567 'The internet is down!'
    fi
    # если предыдущий пинг был неудачен, а текущий успешен, то
    if [ "$result" = disconnected -a "$errorscount" = 0 ]; then
    # запоминаем результат текущего пинга
    result=connected
    # и пишем в лог время установки соединения
    echo `date +%Y.%m.%d__%H:%M:%S`' Связь восстановлена' >> inet.log
    /usr/local/bin/sendsms 380951234567 'The internet is up!'
    fi
    # минутная задержка
    sleep 60
done

Комментариев нет:

Отправить комментарий