admin / 06.05.2018
Некоторые пользователи задаются вопросом: «Как настроить автоматическую перезагрузку роутера ZyXEL серии Keenetic, допустим для ежедневной перезагрузки в определенное время?» К сожалению, представители Zyxel не реализовали функцию перезагрузки устройства по расписанию, но после поиска нужного и работоспособного решения был найден способ для реализации данной задачи. Чтобы автоматизировать этот процесс необходимо использовать VBS-скрипт и известный многим планировщик задач Windows. Тестирование автоматической перезагрузки роутера проводилось на модели ZyXEL Keenetic 4G II.
В первую очередь рассмотрим скрипт, который осуществляет автоматическую перезагрузку. В принципе нас интересует только три основные строки, которые необходимо изменить под собственные настройки роутера. Содержание VBS-скрипта выглядит следующим образом:
set WshShell = WScript.CreateObject(«WScript.Shell»)
WshShell.run «telnet.exe»
WScript.Sleep 5000
WshShell.SendKeys»open 0.0.0.0» & chr(13) //укажите IP-адрес своего роутера ZyXEL Keenetic
WScript.Sleep 5000
WshShell.SendKeys»user» & chr(13) //укажите имя пользователя для авторизации, по умолчанию «admin»
WScript.Sleep 5000
WshShell.SendKeys»password» & chr(13) //укажите пароль пользователя для авторизации
WScript.Sleep 5000
WshShell.SendKeys»system reboot» & chr(13)
WScript.Sleep 3500
ProcessClose(«cmd.exe»)
ProcessClose(«telnet.exe»)
Function ProcessClose(sProcName)
strComputer = «.»
Set objWMIService = GetObject(«winmgmts:{impersonationLevel=impersonate}!\\» & strComputer & «\root\cimv2»)
Set colProcessList = objWMIService.ExecQuery(«Select * from Win32_Process Where Name = ‘» & sProcName & «‘»)
For Each objProcess in colProcessList
objProcess.Terminate()
Next
End Function
Производить изменения желательно с помощью текстового редактора Notepad++, но если нет возможности его скачать, тогда воспользуйтесь простым Блокнотом, который входит в состав операционной системы Windows.
После сохранения скрипта его необходимо разместить в любой директории на вашем компьютере, где будет исполняться программный код. Далее необходимо активировать клиентский сетевой протокол для реализации текстового интерфейса по сети, так называемый удаленный доступ по TELNET.
Для этого необходимо пройти по указанному пути: «Панель управления → Программы → Программы и компоненты → Включение или отключение компонентов Windows» и активировать «Клиент Telnet».
Теперь надо создать простую задачу в планировщике заданий (taskschd.msc), как это сделать указано в статье «Автоматическое включение и отключение компьютера». В итоге должна сформироваться новая задача с указанием времени автоматической перезагрузки роутера с указанием на выполнение исходного скрипта.
Конечный вариант созданной задачи показан на нижеуказанном изображении.
ВАЖНО: Обратите пристальное внимание на раскладку клавиатуры!!! Для корректного исполнения скрипта должна быть активна англоязычная раскладка клавиатуры. Помимо этого нужно понимать, что для исполнения задачи персональный компьютер должен быть включен и произведена авторизация пользователя, то есть, организован автоматический вход в систему.
Если у вас есть роутер ASUS или другой с прошивкой от Олега, то эта записка для вас. Недавно у меня возникла трудность, которую никак не получалось решить. VPN-сессия зависала, при этом VPN-соединение оставалось подключено. Роутер не мог понять, что надо переподключится. Приходилось каждый раз вручную делать перезагрузку роутера, согласитесь, это долгий и утомительный процесс.
Я покопался в интернете, оказалось я такой не один и проблема довольно масштабна среди “роутороводов”. Наши провайдеры не особо жалуют пользователей с роутерами, в большинстве случаев после ответа на вопрос “какая у вас операционная система” суппорт умолкает.
Я не задавался и продолжал искать, но нигде не было универсального решения данной проблемы.
Тогда я подумал, мой роутер основан на Unix и поддерживает Bash-скрипты. Я решил написать “умный” скрипт перезагрузки, в случае повисания VPN-сессии. После нескольких проб и ошибок я остановился на таком варианте.
Алгоритм работы данного скрипта такой: Сначала мы посылаем 3 ping’a до Яндекса, если они проходят то выводим “internet ok”. Если нет, то посылаем ещё 3 ping’a до Гугла, если проходят, выводи “internet ok”. Если ping не дойдёт и до Гугла, то перезагрузка.
Этот скрипт необходимо добавить в планировщик задач (в большинстве случаев это cron), чтобы он выполнялся каждые 5-10 минут.
Качественные cайты на скриптах.
Старые комментарии:
Игорь 31.10.2010 18:37
Интересно, а как засунуть этот скрипт в роутер? 😕
Илья 31.10.2010 19:12
У меня DIR-320 с прошивкой от Олега.
По сути это уже полнофункционал ьный линукс, 😉 есть доступ к командной строке по SSH.
Советую посетить этот форум. (Ахтунг, там есть проблема с кодировкой нужно поставить Кириллицу Windows-1254)
http://wl500g.info/forumdisplay.php?f=86
Игорь 01.11.2010 13:48
Спасибо, получается, что роутер D-Link превращается в ASUS 😮
Илья 01.11.2010 14:42
Ну.. Да :yehh2:
demeister 13.04.2011 04:26
скажите а на DD-WRT при прописании скрипта в cron он будет работать?
Илья 13.04.2011 15:15
Да должен, ибо тоже Linux :yehh2:
DarkShaman 21.05.2013 19:30
У меня на OpenWRT заработало так
#!/bin/sh
echo ————— ————— ————— —
echo WAN CONTROLL RESTART
echo ————— ————— ————— —
PINGRESORCE1=»109.126.0.67″
PINGRESORCE2=»109.126.1.67″
PINGRESORCE3=»google.com»
if (!
ping -q -c3 ${PINGRESORCE1} > /dev/null 2>&1)
then
if (! ping -q -c3 ${PINGRESORCE2} > /dev/null 2>&1)
then
if (! ping -q -c3 ${PINGRESORCE3} > /dev/null 2>&1)
then
reboot
else
echo ‘internet ok’
fi
else
echo ‘internet ok’
fi
else
echo ‘internet ok’
fi
Паша 11.04.2014 21:35
У меня на OpenWRT. Не могу запустить скрипт. Объясните подробно в какую папку на роутере нужно скопировать файл скрипта, как создать этот файл и что нужно прописать в планировщике?
На данный момент создал файл /overlay/home/ping/ping.sh
в котором прописал все что в сообщении от #7 DarkShaman
Не работает. Где ошибка? Роутер не перезагружается при отключении сетевого кабеля ни сразу ни через 5 минут.
DarkShaman, подскажи как ты все проделал?
Олег 07.09.2014 17:27
Доброго времени суток!
Скажите пожалуйста, а можно таким способом перезагружать другую точку, коротая подключена к моей мостом?
Ежедневно c 10:00ч до 20:00ч.
после установки telnet получилось, что мне было необходимо, хотя и не совсем то, что вообще хотелось бы сделать. Роутер TP-Link TL-ER604W
Хотелось бы просто передернуть IPSec Disable/Enable, чтобы туннель опять нормально поднялся, но туда доступ только через ВЕБ-морду
Telnet даже не куцый, а ооочень куцый.
второй вариант скрипта отрабатывает как надо
#!/bin/sh
Watched_IP="www.ya.ru"
Router_IP="192.168.1.1"
Username="user"
Password="password"
(if (! ping -q -c 2 $Watch_IP > /dev/null 2>&1) then
echo Ping fail
(
sleep 10
echo -e "$Username\r\n"
sleep 3
echo -e "$Password\r\n"
sleep 3
echo -e "enable\r\n"
sleep 3
echo -e "$Password\r\n"
sleep 3
echo -e "sys reboot\r\n"
sleep 3
echo -e "y\r\n"
sleep 3
echo -e "exit\r\n"
) | telnet $Router_IP
else
echo Ping Ok
fi)
.
FILED UNDER : IT