Есть вот такой скрипт, написал впопыхах, а потому прошу помощи в улучшении. (использовал материалы из Google).
Код: Выделить всё
#!/bin/sh
PATH=$PATH:/sbin
time=`date +"%b %d %T"`
gw101_router=gw101
gw102_router=gw102
gw103_router=gw103
test_address=ya.ru
ping -c 4 $test_address
if [ $? = 0 ]
then
exit 0
else
#Пингуем адрес в интернете
ping -c 4 $test_address
if [ $? != 0 ]
then
#Пингуем
ping -c 4 $gw102_router
if [ $? = 0 ]
then
#Если работает - идём через него
route del default
route add default gw $gw102_router
echo "$time The $gw102_router channel has been activated" >> /var/log/route_changed.log
fi
fi
#Пингуем адрес в интернете
ping -c 4 $test_address
if [ $? != 0 ]
then
#Пингуем
ping -c 4 $gw103_router
if [ $? = 0 ]
then
#Если работает - идём через него
route del default
route add default gw $gw103_router
echo "$time The $gw103_router channel has been activated" >> /var/log/route_changed.log
fi
fi
#Пингуем адрес в интернете
ping -c 4 $test_address
if [ $? != 0 ]
then
#Пингуем
ping -c 4 $gw101_router
if [ $? = 0 ]
then
#Если работает - идём через него
route del default
route add default gw $gw101_router
echo "$time The $gw101_router channel has been activated" >> /var/log/route_changed.log
fi
fi
fi
Что заметил, работает около двух минут, что не очень быстро.
Что скрипт должен делать, при пропадании интернета через один канал переключаться на другой, для того чтобы на этот ПК можно было попасть по SSH или WEB, это сервер статистики.
Прошу особо не ругать.
Как работает, скрипт проверяет доступность ya.ru, если ресурс не доступен, то начинает перебирать каналы.
Минусы:
1. Хотелось бы добавить проверку уже текущего default gateway, чтобы исключить его из проверки в последствии при переборе шлюзов.
2. Нужно проверять еще на доступность и сами шлюзы, перед проверкой интернета через них.
Посоветуйте решение 1 и 2 пункта.