*Drive*- Здесь рулят padonki
https://drivesource.ru/

Скрипт переключения каналов интернет - 2 провайдера
https://drivesource.ru/viewtopic.php?f=15&t=1613
Страница 1 из 1

Автор:  Padonak [ 29 май 2019, 13:22 ]
Заголовок сообщения:  Скрипт переключения каналов интернет - 2 провайдера

Два провайдера : BeeLine и QWERTY. Канал по умолчанию через BeeLine. При проблеме на канале BeeLine - маршрут по умолчанию переходит в QWERTY . При восстановлении связи в BeeLine - маршрут восстановится . Скрипт стырен из инета (ссылка будет в конце) и мной переработан, по умолчанию на Debian не работал. Итак - забирайте поделие, кому надо :

Код:
#!/bin/sh

# Основной BeeLine
GW1=10.0.0.1  (свой подставляете !!!)
# Резервный QWERTY
GW2=10.0.0.2  (свой подставляете !!!)

# Устанавливаем в переменную время и дату в нужном нам формате
DT=`date +"%T %d.%m.%Y"`

# Для проверки каналов интернет на работоспособность используем пинг на сервисы Google, разные IP для разных каналов
# вы можете использовать свои эталонные адреса для проверки

# Проверяем добавлены ли маршруты на эталонные IP для проверки, если нет, то добавляем
check_node=`netstat -rn | grep "8.8.8.8" | awk '{print $1}'`
    if [ "$check_node" != "8.8.8.8" ]; then
    # добавляем маршрут для Google через основной канал для проверки
    /sbin/route add 8.8.8.8 gw $GW1
    # и через резервный канал
    /sbin/route add 8.8.4.4 gw $GW2
    fi

# Проверяем, если включен основной интернет и файл состояния установлен на резервный канал, то стираем файл состояния
# Такая ситуация может возникнуть, например, если сервер был на резервном и потом его резко выключили,
# А после включения опять включился основной канал (маршрут по-умолчанию)
check_gw=`ip r | grep default | awk '{print $3}'`
    if [ "$check_gw" = "10.0.0.1" ]; then

        if [ -f /tmp/.inet_reserv_work ]; then
        /bin/rm /tmp/.inet_reserv_work
        /bin/echo Стираем файл .inet_reserv_work $DT, так как шлюз $GW1, а не резервный $GW2! >> /var/log/inet_change.log
        fi

    fi

# Проверяем работает ли основной канал
    is=`/bin/ping -c 7 8.8.8.8 | grep -c "64 bytes"`
    if (/usr/bin/test $is -gt "4") then

# Если основной канал работает и файл состояния резервного канала существует, то стираем файл состояния и переключаемся
# на основной канал, пишем запись в лог и отправляем письмо администратору о переключении
        if [ -f /tmp/.inet_reserv_work ]; then
        /sbin/route del default
        /sbin/route add default gw $GW1
        /bin/rm /tmp/.inet_reserv_work
        /bin/echo Основной канал  включен $DT >> /var/log/inet_change.log
        echo "$DT Переключились на BeeLine" | mail -s "Интернет переключился на BeeLine" admin@padonak.su
        else
        exit
        fi

    else
# Если основной не работает, то проверяем резервный и переключаемся на него
        is2=`/bin/ping -c 7 8.8.4.4 | grep -c "64 bytes"`
        if (/usr/bin/test $is -gt "4" || /usr/bin/test $is2 -gt "4") then

                if ! [ -f /tmp/.inet_reserv_work ]; then
                /sbin/route del default
                /sbin/route add default gw $GW2
                /usr/bin/touch /tmp/.inet_reserv_work
                /bin/echo Резервный канал [QWERTY] включен $DT >> /var/log/inet_change.log
                echo "$DT Переключились на QWERTY" | mail -s "Интернет переключился на QWERTY" admin@padonak.su
                fi
        fi
    fi

 



Ну и добавить этот скрипт в крон на выполнение. Я поставил проверку раз в 15 минут. Не думаю что это нужно в домашних условиях делать чаще.

Код:
### Переключение каналов
*/15 *  * * *   root   cd /root/bin/ && ./inet_change.sh > 1>/dev/null 2>&1


взято там >>>

Автор:  Kodla [ 31 май 2019, 16:09 ]
Заголовок сообщения:  Re: Скрипт переключения каналов интернет - 2 провайдера

Надоть буит попробывать. На Debian. OpenSUSE тоже есть. Вот только второго канала нета нетю)).

Автор:  Padonak [ 31 май 2019, 16:37 ]
Заголовок сообщения:  Re: Скрипт переключения каналов интернет - 2 провайдера

Без разницы на чём. Главное пути исправить. Изначально писал БСДэшник - там пути другие. Да и ещё он немного неправильно команды вписал. Пришлось самому переработать.

Работает норм.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/