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

Опубликовано admin в Втр, 05/03/2013 - 10:34

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

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/nullif [ $? -ne 0 ]; thenlog_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) пройдена"  fielse log_test "Проверка для ADSL ($IP3) пройдена"fi
fi

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

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

( categories: )