Код: Выделить всё
#! /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



