скрипт смены каналов провайдеров
назрела необходимость подобного скрипта. ногами не бить - скрипт пилотный, лучше помогайте советом! линсоветом.
p.s. начинать читать с первого elif
#!/bin/bash GW_PRIM='192.168.4.1' #наш главный шлюз GW_RES='192.168.4.2' #наш резервный шлюз test_host='78.109.22.22' #появляется только при переходе на резервный канал HOST1='ya.ru' #хосты для проверки HOST2='google.com' HOST3='ukr.net' R1='ok' R2='false' log='/tmp/gw_change.log' OK="Всё ок - ничё не делаем" BAD="Каналья нет!!! Пробуем что-то делать" if [ -f /tmp/gw_change ] then { if /bin/ping -c 3 $test_host &> /dev/null then { route del default && echo удаляем резервный маршрут route add default gw $GW_PRIM && echo добавляем основной маршрут rm -f /tmp/gw_change && echo удаляем фаил индикатор route del -host $test_host gw $GW_PRIM && echo удаляем статический маршрут : > /tmp/gw_change.log } fi } elif /bin/ping -c 3 $HOST1 &> /dev/null && echo $HOST1 $R1 then echo $OK elif { echo $HOST1 $R2 /bin/ping -c 3 $HOST2 &> /dev/null && echo $HOST2 $R1 } then echo $OK elif { echo $HOST2 $R2 /bin/ping -c 3 $HOST3 &> /dev/null && echo $HOST3 $R1 } then echo $OK else { echo $HOST3 $R2 route del default && echo "удаляем основной маршрут" >> $log route add default gw $GW_RES && echo "добавляем резервный маршрут" >> $log route add -host $test_host gw $GW_PRIM && echo "добавляем статический маршрут" >> $log echo > /tmp/gw_change #mailx -s "ВНИМАНИЕ резервный канал на `hostname`" postmaster echo $BAD $log cat /tmp/gw_change.log | mailx -s "ВНИМАНИЕ резервный канал на `hostname`" postmaster } fi
- hatchet's blog
- 3928 просмотров
Страница для печати

Рабочая вещь, пригодится.
<совет>
использовать pfsync+carp для таких вещей и перестать изобретать велосипед.
ping -I eth1 -c3 -i3 ya.ru &>:
ping -I eth2 -c3 -i3 ya.ru &>:
Тут пинг идет через разные интерфейсы (-I), -i - интервал между пингами, надо ставить побольше, а то будут ложные срабатывания, &>: - замена конструкции "&> /dev/null" (":" - это пустота).
Не совсем согласен
А если шлюз для локальной сети не напрямую подключён к инету
а есть еще два сервера отдельных подключённых к провайдерам
и интерфейс один?
Этот вариант был рассмотрен и отброшен.
Спасибо.
Для моих нужд подойдет. Спасибо буду пробовать.
Отправить комментарий