Коли начал тему, уж продолжу.
Чуть дополнил скрипт. Сначала проверяем пингуется ли сам роутер, и если нет - выходим, а если да, проверяем пингуется ли ближайший прововский роутер (Корбина хиа), и если да - выходим, а если нет - перезагружаем длинк.
Код:
#!/bin/sh
check_ping_cmd=/usr/lib/nagios/plugins/check_ping
router_ip=192.168.0.1
router_http_user=admin
router_http_pass=
ping_host=78.107.1.50 #corbina's cisco PPTP server
#ping_host=77.88.21.11 #yandex.ru
if [ ! -z $1 ]; then router_ip=$1; fi
if [ ! -z $2 ]; then router_http_user=$2; fi
if [ ! -z $3 ]; then router_http_pass=$3; fi
is_host_ok() {
if [ "`${check_ping_cmd} -H ${1} -w 30,100% -c 50,100% -p 5 | grep 'PING OK' -c`" = "1" ]; then
return 1
else
return 0
fi
}
# begin of script
echo -n "Checking if ${router_ip} is up... "
is_host_ok $router_ip
if [ $? = 0 ]; then
echo "host is down: ${router_ip}. Exiting..."
exit 1
else
echo "host is up: $router_ip"
fi
echo -n "Checking if $ping_host is up... "
is_host_ok $ping_host
if [ $? = 1 ]; then
echo "host is up: $ping_host . Exiting..."
exit 0
else
echo "host is unavailable: $ping_host . Rebooting DI-604... "
fi
wget --http-user=${router_http_user} --http-password=${router_http_pass} http://${router_ip}/cgi-bin/rebo -nv -O /dev/null