Как же раздражают эти постоянные перебои с интернетом Укртелекома.
С линией вроде все в порядке, и роутер настроен правильно, но интернет отказывается работать стабильно.
Все было бы хорошо, если бы это не отразилось на моей непосредственной работе.
Я фрилансер, а это значит, что я проснулся и уже на работе.
То есть любые незапланированные сбои (в моем городе бывают и плановые сбои) мягко говоря не очень радуют и влияют на производительность.
Ну да ладно, не буду ныть - перейдем к делу.
Во время очередного удара моего роутера я решил автоматизировать процесс его перезагрузки, что обычно приводит к подключению ppp-соединения.
Я написал сценарий bash, который подключается к моему DLink, входит в систему и запрашивает файл restartinfo.cgi. Весь этот процесс удачно помещается в цикл «пока нет интернета», и соответственно я перемещаюсь на кухню пить чай.
Это просто.
Вим в руки — и поехали:
#!/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
$ .Правда, в bash пришлось разбираться без гугла — я сам в этом плохо разбираюсь, поэтому искал скрипты в /usr/lib, чтобы в качестве примера прочитать мануал./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
В итоге скрипт заработал (хотя интернет появился быстрее :).
Через некоторое время мне это очень пригодилось.
Да, 4.2.2.2 - все время пингуется, поэтому вместо него можно использовать ya.ru. Кроме того, вы можете использовать его для проверки DNS. Счастливой пятницы! Теги: #Укртелеком #bash программирование #dlink #Чулан #потеря связи
-
Западная Сахара
19 Oct, 24 -
Хостинг-Центр Рбк Vs. Masterhost
19 Oct, 24 -
Обзор 5 Популярных Почтовых Сервисов
19 Oct, 24