Страница 1 из 1

скрипт проверки ping

Добавлено: 2014-11-24 13:18:10
ges35
Всем привет, прошу помощи в написании скрипта т.к сам до конца допетрить как делать не могу
есть две машины на них установлена freebsd 8.4 настроен nat со всеми плюшками и CARP на внутренних интерфейсах , внешние висят на разных провайдерах, получается в случае выхода из строя одного из шлюзов второй забирает на себя весь трафик, теперь хочу сделать скрипт чтобы при пропадании связи с провайдером ложился внутренний интерфейс тем самым имитировал выключение машины и CARP перебрасывал весь трафик на др шлюз.
реализовать хочу с помощью скрипта, пинговать ДНС провайдера например, если пинги пропадают то вырубается внутренний интерфейс, при появлении пингов интерфейс поднимается , скрипт в крон.
теперь о скрипте

вот что пока есть

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

#!/bin/sh
 
testip="12.12.12.12"
kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
if [ $kol == 0 ]
     then
  echo "Нет пинга, Ждём 1 минуту" | logger -t NOPING
     sleep 60
     kol=$(/sbin/ping -c 4 $testip | grep "received" | awk '{print $4}')
      if [ $kol == 0 ]
      then
     echo "Выполнение моего скрипта."| logger -t NOPING
     ifconfig fxp2 down
    exit 0
       fi
 fi
правда в этом скрипте нет проверок и после выполнения ifconfig fxp2 down он нормально не поднялся, может по др писать надо
нужно реализовать проверки

ping dns внешний провайдер
если пинг есть то делаем проверку 1
если пинга нет то делаем проверку 2

проверка 1
ping dns внутр
если есть то конец
если нет то вкл внутренний интерфейс
конец

проверка 2
ping dns внутр
если есть то выкл внутр интерфейс
если нет то конец

как то так наверно должно быть, прошу строго не судить программировал только на бейсике

Re: скрипт проверки ping

Добавлено: 2014-12-02 7:17:29
ges35
М да смотрю все так и бросились помогать прям закидали скриптами
вот рабочий проверенный скрипт

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

#!/bin/sh
host="8.8.8.8"
# Проверяем доступность Google DNS
/sbin/ping -c 10 -q ${host} >/dev/null
case "$?" in
      0)
      /sbin/ifconfig fxp0 up >/dev/null
      ;;
     *)
     /sbin/ifconfig fxp0 down >/dev/null
 ;;
esac
может кому пригодиться