inetcheck.sh

Опубликовано admin в Втр, 05/03/2013 - 10:31

Скрипт проверяющий работоспособность интернет соединения
Скрипт принимает решение о работоспособности подключения исходя из
доступности определенного ресурса в сети. В случае одного адреса рекомендую вписать провайдерский шлюз.
В данном примере использован "Google Open DNS". Исходя из опыта могу сказать, что
принятие решения о работоспособности подключения исходя только из доступности
одного ресурса, даже очень стабильного, не совсем корректно. Поэтому в
ближайшее время я собираюсь переработать этот скрипт с применением функций
на предмет проверки группы адресов (3-5 шт.)

mkdir -p /etc/cron.inet/
nano -w /etc/cron.inet/inetcheck.sh

#!/bin/bash
File="/var/log/pppd.log"
# log file
IP="8.8.8.8"
# Google Open DNS

ping -c 5 -s 100 -i 0.2 $IP > /dev/null
if [ $? -ne 0 ]; then
    echo "======================================" >> $File
    echo " `date` Проверка не пройдена.Инета нет" >> $File
    /etc/init.d/net.ppp0 restart > /dev/null
#Переподключение соединения. Для других OS может отличаться.
    echo " `date` Инет переподключен" >> $File
else
echo "======================================" >> $File  
echo " `date` Проверка пройдена" >> $File
fi

chmod a+x /etc/cron.inet/inetcheck.sh

В данном виде скрипт опирается на доступность $IP.
Вид лог файла при пройденной проверке.
======================================
Wed Feb 9 03:17:01 EET 2011 Проверка пройдена
======================================
Wed Feb 9 03:18:02 EET 2011 Проверка пройдена
======================================
При не пройденной проверке:
======================================
Wed Feb 9 07:38:01 EET 2011 Проверка не пройдена.Инета нет
Wed Feb 9 07:38:04 EET 2011 Инет переподключен

Для постоянной работы скрипта необходимо добавить его в cron

nano -w /etc/crontab

*/1 * * * *    root    /bin/run-parts /etc/cron.inet >/dev/null 2>&1

/etc/init.d/vixie-cron restart

В данном виде скрипт выполняется каждую минуту. Чаще смысла нет, так как подключению необходимо время для завершения.
Переработанный inetcheck.sh, который проверяет работоспособность подключения исходя из установленного перечня IP адресов.

( categories: )