Как же надоедают эти постоянные обрывы Укртелекомовских интернетов. Вроде и линия в порядке, и роутер правильно настроен, но стабильно работать интернет отказывается. Все бы хорошо, если бы это не влияло на мою непосредственную работу. Я фрилансер, что в переводе означает проснулся — и уже на работе. То есть любые незапланированные сбои (у меня в городе бывают и сбои по плану) мягко говоря не очень радуют и сказываются на производительности.
Ну да ладно, не буду ныть — к делу.
Во время очередной забастовки моего роутера решил автоматизировать процесс его перезагрузки, что обычно ведет за собой подключение ppp-соединения. Написал баш-скрипт, который подключается к моему DLink-у, логинится и запрашивает файл rebootinfo.cgi. Весь этот процесс успешно помещается в цикл «пока не будет инета», а я соответственно — перемещаюсь на кухню пить чай. Все просто. Vim в руки — и поехали:
Приблизительный вывод:
Правда приходилось разбираться в баше без гугла — сам-то я в нем не силен, так что искал скрипты в /usr/lib, чтоб по примеру, читал мануал. В конечном итоге скрипт заработал (правда инет появился быстрее :). Спустя некоторое время он мне действительно пригодился.
Да, 4.2.2.2 — все время пингуется, так что можно юзать вместо ya.ru. К тому же с помощью него можно проверить ДНС.
С пятницей!
Ну да ладно, не буду ныть — к делу.
Во время очередной забастовки моего роутера решил автоматизировать процесс его перезагрузки, что обычно ведет за собой подключение ppp-соединения. Написал баш-скрипт, который подключается к моему DLink-у, логинится и запрашивает файл rebootinfo.cgi. Весь этот процесс успешно помещается в цикл «пока не будет инета», а я соответственно — перемещаюсь на кухню пить чай. Все просто. Vim в руки — и поехали:
#!/bin/bash
host=${host:="4.2.2.2"}
router_ip="192.168.1.1"
router_reboot_path="/rebootinfo.cgi"
router_user="admin"
router_pw="pw_here"
num_packets=4
receiving=""
reboots=1
connect_wait=60
while [ "$receiving" == "" ]
do
echo -ne `date +%T`"\t"
echo "pinging $host with $num_packets packets"
receiving=`ping $host -c $num_packets | grep "$num_packets received"`
if [ "$receiving" != "" ]
then
echo -ne `date +%T`"\t"
echo "$host is alive"
else
echo -ne `date +%T`"\t"
echo "$host not responding"
echo -ne `date +%T`"\t"
echo -n "reboot router - attempt $reboots"
let "reboots += 1"
`curl -s -u $router_user:$router_pw "http://$router_ip$router_reboot_path" > /dev/null`
sleep 10
routerAlive=""
while [ "$routerAlive" == "" ]
do
routerAlive=`ping $router_ip -c $num_packets | grep "$num_packets received"`
if [ "$routerAlive" != "" ]
then
echo "done. "
echo -ne `date +%T`"\t"
echo -n "waiting $connect_wait sec for possible connect"
sec=0
while [ "$sec" != $connect_wait ]
do
let "sec += 1"
if [ "$sec" == $connect_wait ]
then
echo "."
else
echo -n "."
fi
sleep 1
done
else
echo -n "."
fi
done
fi
done
Приблизительный вывод:
$ ./routerReboot 23:25:48 pinging 4.2.2.2 with 4 packets 23:26:01 4.2.2.2 not responding 23:26:01 reboot router - attempt 1.....done. 23:27:10 waiting 60 sec for possible connect............................................................ 23:28:11 pinging 4.2.2.2 with 4 packets 23:28:14 4.2.2.2 is alive
Правда приходилось разбираться в баше без гугла — сам-то я в нем не силен, так что искал скрипты в /usr/lib, чтоб по примеру, читал мануал. В конечном итоге скрипт заработал (правда инет появился быстрее :). Спустя некоторое время он мне действительно пригодился.
Да, 4.2.2.2 — все время пингуется, так что можно юзать вместо ya.ru. К тому же с помощью него можно проверить ДНС.
С пятницей!
