Здравствуйте Уважаемые! Есть вот такой вот скриптик:
#!/bin/sh
HOST="8.8.8.8"
# Файл-флаг. Появляется при переключении на резервный канал
LOCKFILE="/tmp/check_internet.lock"
# Файл журнала
LOGFILE="/var/log/check_internet.log"
#Добавляем маршрут до 8.8.8.8 через 1прова
ip route add 8.8.8.8 via 119.228.242.13 dev eth0
while :
do
# Пингуем проверочный хост через основной канал
ping -I 95.79.221.8 -c 8 -n -q ${HOST} > /dev/null
# Если возникла ошибка (хост не доступен)
if [ $? -ne "0" ]; then
# Если нет файла-флага
if [ ! -f ${LOCKFILE} ]; then
#удаляем маршрут по умолчанию через 1прова
ip route del default
#добавляем маршрут по умолчанию через РТК
ip route add default via 203.208.106.37 dev ppp100
# Создаём файл флаг
touch ${LOCKFILE}
# Делаем запись в файл журнала
echo `date +'%Y/%m/%d %H:%M:%S'` 1st inet connection lost >> ${LOGFILE}
fi
# Если же всё хорошо
else
# Если есть файл-флаг
if [ -f ${LOCKFILE} ]; then
#удаляем маршрут по умолчанию через РТК
ip route del default via 203.208.106.37 dev ppp100
#добавляем маршрут по умолчанию через 1прова
ip route add default via 119.228.242.13 dev eth0
# Удаляем файл-флаг
rm -f ${LOCKFILE}
# Записываем событие в файл журнала
echo `date +'%Y/%m/%d %H:%M:%S'` 1st connetction UP >> ${LOGFILE}
fi
fi
done
Скрипт отрабатывает на ура, в случаях падения линка, либо недоступности 8.8.8.8, но есть небольшая трабла. Когда на 1м провайдере заканчиваются деньги, скрипт этого не видит и считает что все ок, т.к данный пров в случае задолженности не блокирует ICMP, а взаместо любых веб страниц отдает свою заглушку «пополните баланс». Telnet и другие протоколы не проверял, да и снаружи по SSH сервер не отвечает, только на пинг отвечает.
Пробовал
curl -Is http://${HOST} |head -n 1
Есть идеи как еще простецким способом проверять доступность интернет-соединения?