Наткнулся на доработку, но конечного результата там не было. Выкладываю проверенный готовый скрипт:
#!/bin/bash
#
# Скрипт в бесконечном цикле пингует удалённый хост в инете с интервалом 5 сек
# при первой удачной или неудачной попытке пинга пишется соответствующее сообщение в лог и на экран
# следующая запись в лог делается только при изменении состояния связи
# Узел опроса
ip="ya.ru"
# Кол-во пингов
count=3
# инициализация переменной результата, по умолчанию считается, что связь уже есть
status=connected
# Файл логов
logfile=/ping.log
echo `date +%Y.%m.%d__%H:%M:%S`' Скрипт проверки связи запущен' >> ${logfile}
# бесконечный цикл
while [ true ]; do
# пинг с последующей проверкой на ошибки
result=$(ping -c ${count} ${ip} 2<&1| grep -icE 'unknown|expired|unreachable|time out')
# если ни один не прошел, то
if [ "$status" = connected -a "$result" != 0 ]; then
# Меняем статус, чтоб сообщение не повторялось до смены переменной result
status=disconnected
# Записываем в лог результат
echo `date +%Y.%m.%d__%H:%M:%S`' Соединение с интернет отсутствует' >> ${logfile}
# Вывод результата на экран
echo `date +%Y.%m.%d__%H:%M:%S`' Соединение с интернет отсутствует'
fi
# если все пинги прошли, то
if [ "$status" = disconnected -a "$result" -eq 0 ]; then
# Меняем статус, чтоб сообщение не повторялось до смены переменной result
status=connected
# Пишем в лог время установки соединения
echo `date +%Y.%m.%d__%H:%M:%S`' Связь есть' >> ${logfile}
# Вывод результата на экран
echo `date +%Y.%m.%d__%H:%M:%S`' Связь есть'
fi
# 5 сек задержка
sleep 5
done