*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/ |