четверг, 17 февраля 2011 г.

ininet_check.sh Скрипт проверки подключения. Переработан.

В пред идущей версии был описан вариант проверки соединения исходя из доступности одного адреса.
Данный скрипт принимает решение исходя из состояния пяти узлов. Как указано на схеме. Упрощенный скрипт.

IP1 && IP2 = inet.
IP3-IP5 = последняя миля.

################################################
#!/bin/bash
File="/var/log/test.log"
IP1="8.8.8.8"
IP2="192.168.19.18"
IP3="192.168.1.101"
IP4="192.168.0.117"
IP5="192.168.0.112"
inet=1
# 0 = off
# 1 = on

log_test() {
echo "`date` $1" >>$File
}
log_test "#########################################"
log_test "Проверка запущена"
if [ -n "$(ifconfig | grep -i "ppp0")" ]; then
# iface = up
log_test "iface up"

ping -c 7 -s 100 -i 0.2 $IP1 > /dev/null
if [ $? -ne 0 ]; then
  log_test "Проверка для IP1 ($IP1) провалена"
  ping -c 7 -s 100 -i 0.2 $IP2 > /dev/null
  if [ $? -ne 0 ]; then
  log_test "Проверка для IP2 ($IP2) провалена"
  inet=0;
  else
  log_test "Проверка пройдена для IP2 = $IP2"
  fi
else
log_test "Проверка пройдена для IP1 = $IP1"
fi

else
# iface != up
log_test "iface down"
inet=0;
ping -c 7 -s 100 -i 0.2 $IP3 > /dev/null
if [ $? -ne 0 ]; then
log_test "ADSL DOWN?"
inet=1
  ping -c 7 -s 100 -i 0.2 $IP4 > /dev/null
  if [ $? -ne 0 ]; then
  log_test "shDSL Bel DOWN?"
   
    ping -c 7 -s 100 -i 0.2 $IP5 > /dev/null
    if [ $? -ne 0 ]; then
    log_test "shDSL My DOWN?"
    else
    log_test "Проверка для shDSL my ($IP5) пройдена"
    fi
  else
  log_test "Проверка для shDSL Bel ($IP4) пройдена"
  fi
else
log_test "Проверка для ADSL ($IP3) пройдена"
fi

fi

if [ "$inet" = 0 ]; then
/etc/init.d/net.ppp0 restart > /dev/null
log_test "Инет переподключен"
fi

log_test "Проверка завершена"
################################################

Комментариев нет:

Отправить комментарий