четверг, 26 мая 2011 г.

переключениe между каналами на FreeBSD

Вот собственно сам скрипт:
cat /usr/local/etc/scripts/if_ping.sh
#!/bin/sh
###
ng_ip=`ifconfig ng0 | grep inet | awk '{print $2}'`
ng_gw=`ifconfig ng0 | grep inet | awk '{print $4}'`
tun_ip=`ifconfig tun0 | grep inet | awk '{print $2}'`
tun_gw=`ifconfig tun0 | grep inet | awk '{print $4}'`
def_gw=`netstat -rn | grep default | awk '{print $2}'`

if ping -c 3 -S $ng_ip ya.ru > /dev/null
then
if [ "$ng_gw" != "$def_gw" ] > /dev/null
then
/sbin/route change default $ng_gw
fi
exit 0
else
/sbin/route change default $tun_gw
/usr/local/etc/rc.d/mpd5 restart
if ping -c 3 -S $tun_ip ya.ru > /dev/null
then
exit 0
else
/sbin/route change default $ng_gw
sleep 3
killall -9 ppp
sleep 5
killall ppp
sleep 7
killall ppp
sleep 45
ppp -ddial ukrtelecom
fi
fi

Пробовали вытягивать кабеля по очереди на 5-10 минут, каналы переключает – при возвращении линка с впном, через 2 минуты снова всё переходит на него.
PS. Если Вам не нужен канал по умолчанию, то проверку в строках:
if [ "$ng_gw" != "$def_gw" ] > /dev/null
then
/sbin/route change default $ng_gw
fi
Можно удалить, тогда скрипт будет переключать на любой из рабочих каналов и будет на нём до тех пор, пока не упадёт другой.


взято http://noted.org.ua/2336

Комментариев нет: