Скрипт переключения default route (Помогите улучшить.)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Аватара пользователя
Voler
Сообщения: 498
ОС: Fedora

Скрипт переключения default route

Сообщение Voler »

Добрый день.

Есть вот такой скрипт, написал впопыхах, а потому прошу помощи в улучшении. (использовал материалы из 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 пункта.
Спасибо сказали:
BIgAndy
Сообщения: 1923

Re: Скрипт переключения default route

Сообщение BIgAndy »

Voler писал(а):
22.08.2011 18:47
Добрый день.

Есть вот такой скрипт, написал впопыхах, а потому прошу помощи в улучшении. (использовал материалы из Google).
....
1. Хотелось бы добавить проверку уже текущего default gateway, чтобы исключить его из проверки в последствии при переборе шлюзов.
2. Нужно проверять еще на доступность и сами шлюзы, перед проверкой интернета через них.

Посоветуйте решение 1 и 2 пункта.

а) Зачем? Чем штатные средства не подходят?
б) Читайте про бондинг, балансировку нагрузки, iproute2 (tc)...
Спасибо сказали: