Скрипт переключения каналов инернет

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: Скрипт переключения каналов инернет

Непрочитанное сообщение harmless » 2013-01-12 0:19:49

Здрасте всем.
Вот по просьбе товарища написал простенький скриптик для переключения каналов

Код: Выделить всё

#!/bin/sh

ping0=`/usr/sbin/setfib -0 /sbin/ping -c 2 8.8.8.8 | grep packets | cut -c 24-24`
ping1=`/usr/sbin/setfib -1 /sbin/ping -c 2 8.8.8.8 | grep packets | cut -c 24-24`

routechk0="`/usr/sbin/setfib -0 netstat -rn | fgrep default | awk '{print $2}'`"
routechk1="`/usr/sbin/setfib -1 netstat -rn | fgrep default | awk '{print $2}'`"

gw0="10.1.1.1"
gw1="10.2.2.1"

server="8.8.8.8"

if [ $ping0 = 2 ] && [ $ping1 = 2 ]
then
        if [ $routechk0 = $gw1 ]
        then
                echo "Changing the channel to the main.";
                echo "/usr/sbin/setfib -0 route change default $gw1";
                echo "/usr/sbin/setfib -1 route change default $gw0";
        else
                echo "it's ok, i will repeat check again at 1 minute";
        fi
elif [ $ping0 = 0 ]
then
        if [ $routechk0 = $gw1 ]
        then
                echo "Backup channel is down.";
                echo "Changing the channel to the main.";
                echo "/usr/sbin/setfib -0 route change default $gw0";
                echo "/usr/sbin/setfib -1 route change default $gw1";
        elif [ $routechk0 = $gw0 ]
        then
                echo "Main channel is down.";
                echo "Changing the channel to the backup.";
                echo "/usr/sbin/setfib -0 route change default $gw1";
                echo "/usr/sbin/setfib -1 route change default $gw0";
        fi
elif [ $ping1 = 0 ]
then
        if [ $routechk0 = $gw1 ]
        then
                echo "Main channel is down.";
                echo "Working on the backup channel.";
        else
                echo "Backup channel is down.";
                echo "Working on the main channel.";
        fi
else
        echo "Unknown result.";
fi

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

harmless
лейтенант
Сообщения: 719
Зарегистрирован: 2007-08-23 10:56:51
Откуда: Украина, г. Киев, г. Белая Церковь
Контактная информация:

Re: Скрипт переключения каналов инернет

Непрочитанное сообщение harmless » 2013-01-13 3:35:51

Чуть видоизменил скрипт

Код: Выделить всё

#!/bin/sh

SetFIB="/usr/sbin/setfib "
ping="/sbin/ping "
grep="/usr/bin/grep "
awk="/usr/bin/awk "
route="/sbin/route "

ping0=`${SetFIB} -0 ${ping} -c 2 8.8.8.8 | ${grep} packets | ${awk} '{print $4}'`
ping1=`${SetFIB} -1 ${ping} -c 2 8.8.8.8 | ${grep} packets | ${awk} '{print $4}'`

routechk0="`${SetFIB} -0 ${route} -n get default | ${grep} gateway | ${awk} '{print $2}'`"
routechk1="`${SetFIB} -1 ${route} -n get default | ${grep} gateway | ${awk} '{print $2}'`"

gw0="10.1.1.1"
gw1="10.2.2.1"

server="8.8.8.8"

log(){
        logger -t CannelSwitcher -i $1;
}

cangeGW(){
        ${SetFIB} -0 ${route} change default $1;
        ${SetFIB} -1 ${route} change default $2;
}

if [ $ping0 = 2 -a $ping1 = 2 ]
then
        if [ $routechk0 = $gw1 ]
        then
                log "Changing the channel to the main.";
                cangeGW $gw0 $gw1;
        else
                log "it's ok, i will repeat check again at 1 minute";
        fi
elif [ $ping0 = 0 ]
then
        if [ $routechk0 = $gw1 ]
        then
                log "Backup channel is down. Changing the channel to the main.";
                cangeGW $gw0 $gw1;
        elif [ $routechk0 = $gw0 ]
        then
                log "Main channel is down. Changing the channel to the backup.";
                cangeGW $gw1 $gw0;
        fi
elif [ $ping1 = 0 ]
then
        if [ $routechk0 = $gw1 ]
        then
                log "Main channel is down. Working on the backup channel.";
        else
                log "Backup channel is down. Working on the main channel.";
        fi
else
        log "Unknown result.";
fi

Саша2
проходил мимо

Re: Скрипт переключения каналов инернет

Непрочитанное сообщение Саша2 » 2013-09-12 16:13:33

куда вписать
8)
1.ipnat -CF -f /etc/ipnat.rules
2.ipnat -CF -f /etc/ipnaty.rules



1.echo nameserver 194.44.214.40 >> /etc/resolv.conf
2.echo nameserver 213.130.16.3 >> /etc/resolv.conf
:evil: