Переключение между каналами (FreeBSD)
Добавлено: 31 мар 2010, 11:15
Код: Выделить всё
#! /bin/sh
route="/sbin/route"
ping="/sbin/ping"
natd="/sbin/natd"
sleep="/bin/sleep"
killall="/usr/bin/killall"
touch="/usr/bin/touch"
# внешние сетевые карты
lan_isp1="rl0"
lan_isp2="rl1"
GW1=194.242.118.61
GW2=83.218.237.45
$ping -q -c 2 $GW1 > /dev/null 2>&1
# Если код завершения пинга 1 = error
if [ $? !=0 ]; then
# пингуем второй канал
$ping -q -c 2 $GW2 > /dev/null 2>&1
# если код завершение true =0
if [ $? =0 ]; then
# Если файла gw2.changed нет, создаем его.
# Он определяет переход на основной канал,
# даже если есть и резервный
# GW2 будет маршрутом по умолчанию
if [ ! -f /tmp/gw2.changed ]; then
$route delete default
$killall natd
$route add default $GW2
$touch /tmp/gw2.changed
$sleep 15
$natd -n ${lan_isp2}
. /etc/fwrules2.sh
exit 0;
fi
else
echo "Оба канала не доступны";
exit 1;
fi
else
# Если пинганулся первый шлюз
# Если файл gw2.changed найден, удаляем его
# GW1 будет маршрутом по умолчанию
if [ -f /tmp/gw2.changed ]; then
$route delete default
$killall natd
$route add default $GW1
$rm /tmp/gw2.changed
$sleep 15
$natd -n ${lan_isp1}
. /etc/fwrules1.sh
exit 0;
fi
echo "Основной канал работает и установлен по умолчанию";
exit 0;
fi