#!/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