Тестировал на FreeBSD, думаю на Linux он должен работать тоже нормально.
Суть работы простая, пингает два хоста, и если ни один из них не доступен переключается на запасной канал, как только основной канал опять доступен переключается на него обратно.
#!/bin/sh # # change-isp.sh # PING_HOST1=8.8.8.8 PING_HOST2=8.8.4.4 MAIN_IP=1.1.1.1 MAIN_GW=1.1.1.2 BACKUP_GW=2.2.2.2 CHANNEL_FILE=/tmp/CUR_CHANNEL CUR_CHANNEL=`cat $CHANNEL_FILE` LOG=/var/log/change-isp.log png1=`ping -S $MAIN_IP -c 10 $PING_HOST1 | grep % | awk '{ print $7 };'` png2=`ping -S $MAIN_IP -c 10 $PING_HOST2 | grep % | awk '{ print $7 };'` if [ $png1 = '100.0%' ] && [ $png2 = '100.0%' ]; then if [ "$CUR_CHANNEL" = "0" ] ; then echo `date +"%D - %T"` "> Change to backup channel" | tee $LOG echo 1 > $CHANNEL_FILE route change default $BACKUP_GW fi else if [ "$CUR_CHANNEL" = "1" ] ; then echo `date +"%D - %T"` "> Change to main channel" | tee $LOG echo 0 > $CHANNEL_FILE route change default $MAIN_GW fi fi
Комментариев нет:
Отправить комментарий