Как же надоедают эти постоянные обрывы Укртелекомовских интернетов. Вроде и линия в порядке, и роутер правильно настроен, но стабильно работать интернет отказывается. Все бы хорошо, если бы это не влияло на мою непосредственную работу. Я фрилансер, что в переводе означает проснулся — и уже на работе. То есть любые незапланированные сбои (у меня в городе бывают и сбои по плану) мягко говоря не очень радуют и сказываются на производительности.
Ну да ладно, не буду ныть — к делу.
Во время очередной забастовки моего роутера решил автоматизировать процесс его перезагрузки, что обычно ведет за собой подключение 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. К тому же с помощью него можно проверить ДНС.
С пятницей!