Дома, как, как и у многих, интернет раздает роутер.
Купленный в свое время ZyXEL P-330W вполне справлялся со своей задачей, пока однажды не начались проблемы. Видимо провайдер что-то там у себя делал, сетка падала, а роутер оставался в полной уверенности, что все в порядке и не переподключал соединение.
Единственное, что оставалось — перегружать сам роутер путем отключения питания.
Т.к. домашний сервак работает 24/7 и интернет ему нужен постоянно, озадачился проблемой автоматической перезагрузки роутера в случае, если отрубается интернет.
ПРОБЛЕМА:
Роутер или ADSL модем теряет связь и не восстанавливает соединение.
РЕШЕНИЕ:
Использование скрипта для проверки подключения к интернет и перезагрузки роутера в случае необходимости.
Как это все будет работать – Раз в полчаса планировщик запускает скрипт, который пингует определенные адреса и если ответа нет, заходит на роутер через телнет и отправляет команду перезагрузки.
Теперь подробно, по шагам.
Создаем в текстовом редакторе файл router.vbs (например)
Копируем туда следующий код:
>>>Начало кода со следующей строки<<<
Function PcOnline (strComputer)
‘Check if the remote machine is online.
Dim objPing,objStatus
Dim TextStream, TimeVar
Dim fso, tf
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objPing = GetObject(«winmgmts:{impersonationLevel=impersonate}»)._
ExecQuery(«select Replysize from Win32_PingStatus where address = ‘» & strComputer & «‘»)
For Each objStatus in objPing
If IsNull(objStatus.ReplySize) Then
PcOnline=False
‘Пишем Лог файл
Set fso = CreateObject(«Scripting.FileSystemObject»)
If (fso.FileExists(«c:\routerlog.txt»)) Then
Set tf = fso.OpenTextFile(«c:\routerlog.txt»,ForAppending, True)
tf.WriteLine(Now() & » » & strComputer & » is down «)
tf.Close()
Set fso = Nothing
Set tf = Nothing
Else
Set tf = fso.CreateTextFile(«c:\routerlog.txt»,ForAppending, True)
tf.WriteLine(Now() & » » & strComputer & » is down «)
tf.Close()
Set fso = Nothing
Set tf = Nothing
End If
‘ Конец Лог файла
Else
PcOnline = True
‘Wscript.Echo strComputer & » is responding to a ping «
End If
Next
Set objPing=Nothing
Set objStatus=Nothing
End Function
Dim fsot, tft
Const ForReading = 1, ForWriting = 2, ForAppending = 8
If PcOnline(«www.ya.ru»)_
OR PcOnline(«www.google.com»)_
Then
‘ если статус = 0, пустая строка — другое
Wscript.Echo «all ok»
Set fsot = CreateObject(«Scripting.FileSystemObject»)
Set tft = fsot.OpenTextFile(«c:\routerlog.txt»,ForAppending, True)
tft.WriteLine(«——————«)
tft.Close()
Set fsot = Nothing
Set tft= Nothing
WScript.Quit 0
Else
‘WScript.Echo «Reboot»
‘Set oShell = WScript.CreateObject(«WScript.Shell»)
‘oShell.Run «telnet.exe 1.1.0.1»
‘WScript.Sleep 2000
‘oShell.SendKeys «user» & chr(13)
‘WScript.Sleep 2000
‘oShell.SendKeys «password» & chr(13)
‘WScript.Sleep 2000
‘oShell.SendKeys «reload» & chr(13)
‘WScript.Sleep 2000
‘oShell.SendKeys «^({]})q» & chr(13)
‘WScript.Quit 255
End If
Set fsot = CreateObject(«Scripting.FileSystemObject»)
Set tft = fsot.OpenTextFile(«c:\routerlog.txt»,ForAppending, True)
tft.WriteLine(«——————«)
tft.Close()
Set fsot = Nothing
Set tft= Nothing
>>>Конец кода на предыдущей строке<<<
Что к чему:
ya.ru и google.com сервера, которые пингует скрипт для проверки ест ли интернет или нет
user — логин админа роутера или модема – обычно admin
password – пароль админа.
В строчке ‘oShell.Run «telnet.exe 1.1.0.1» вместо 1.1.0.1 прописываем адрес своего роутера (192.168.1.1 например)
В строчке ‘oShell.SendKeys «reload» & chr(13) – reload, это команда, которая перегружает роутер или модем, может отличаться от модели к модели. Посмотрите в документации или методом научного тыка и вставьте ту команду, которая подходит вам – я встречал reload и reboot.
Также скрипт пишет лог файл c:\routerlog.txt
ИСПОЛЬЗОВАНИЕ:
Сохраняем файл router.vbs с кодом внутри.
Добавляем в качестве задания запускать этот файл каждые 30 минут (по желанию)
Для XP — Панель управления -> Назначенные задания -> Добавить задание
Теперь скрипт будет каждые 30 минут проверять соединение с интернет и в случае срыва коннекта перегружать роутер/модем.
Если у вас есть роутер ASUS или другой с прошивкой от Олега, то эта записка для вас. Недавно у меня возникла трудность, которую никак не получалось решить. VPN-сессия зависала, при этом VPN-соединение оставалось подключено. Роутер не мог понять, что надо переподключится. Приходилось каждый раз вручную делать перезагрузку роутера, согласитесь, это долгий и утомительный процесс.
Я покопался в интернете, оказалось я такой не один и проблема довольно масштабна среди “роутороводов”. Наши провайдеры не особо жалуют пользователей с роутерами, в большинстве случаев после ответа на вопрос “какая у вас операционная система” суппорт умолкает.
Я не задавался и продолжал искать, но нигде не было универсального решения данной проблемы. Тогда я подумал, мой роутер основан на Unix и поддерживает Bash-скрипты. Я решил написать “умный” скрипт перезагрузки, в случае повисания VPN-сессии. После нескольких проб и ошибок я остановился на таком варианте.
#!bin/sh
PINGRESORCE1="ya.ru"
PINGRESORCE2="google.com"
if (! ping -c 3 &{PINGRESORCE1} >/dev/nill 2>&1).
then
if (! ping -c 3 &{PINGRESORCE2} >/dev/nill 2>&1).
then
reboot
else
echo 'internet ok'
fi
else
echo 'internet ok'
fi
Алгоритм работы данного скрипта такой: Сначала мы посылаем 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 с прошивкой от Олега.
По сути это уже полнофункционал ьный линукс, 
Советую посетить этот форум. (Ахтунг, там есть проблема с кодировкой нужно поставить Кириллицу 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ч.
-
#1
Хотел поделиться скриптами автоматической перезагрузки роутера при падении сети. Работает уже более месяца. У меня zyxel keenetic и модем мегафон.
1. Добавить telnet.exe в стандартных средствах винды.
2. Создать «keenetic-reboot.vbs» скрипт. Листинг: http://pastebin.com/ZSQHzxaP
3. Создать батник и добавить в задания винды на старт каждые 30 минут. http://pastebin.com/rCTh8zvc
4. Положить оба файла в корень диска C:/
Принцип действия прост, каждый 30 минут стартует батник, который пингует mail.ru, если недоступен, то запускает скрипт, который по телнету перегружает роутер.
-
#3
Супер, у самого все руки не доходили нарыть инфы)
-
#4
Хотел поделиться скриптами автоматической перезагрузки роутера при падении сети. Работает уже более месяца. У меня zyxel keenetic и модем мегафон.
1. Добавить telnet.exe в стандартных средствах винды.
2. Создать «keenetic-reboot.vbs» скрипт. Листинг: http://pastebin.com/ZSQHzxaP
3. Создать батник и добавить в задания винды на старт каждые 30 минут. http://pastebin.com/rCTh8zvc
4. Положить оба файла в корень диска C:/Принцип действия прост, каждый 30 минут стартует батник, который пингует mail.ru, если недоступен, то запускает скрипт, который по телнету перегружает роутер.
А как wifi адаптер перезапускать? у меня после перезагрузки через раз отваливается…
-
#5
А как wifi адаптер перезапускать? у меня после перезагрузки через раз отваливается…
тоже есть такая проблема, придится витаскивать и втикать его снова.
-
#6
Под 7-кой работает прекрасно, но в 10ке почему что скрипт отрабатывает команды не правильно(пытается в командную строку телнета вставить белеберду). Пользуется кто? как переделать под 10-ку
-
Безымянный.jpg
107,7 КБ · Просмотры: 178
-
#7
Под 7-кой работает прекрасно, но в 10ке почему что скрипт отрабатывает команды не правильно(пытается в командную строку телнета вставить белеберду). Пользуется кто? как переделать под 10-ку
У меня под 10 работает. У себя ищите ошибку.
-
#8
«open АДРЕС РОУТЕРА» — это ip адрес WAN ?
спс
Последнее редактирование:
-
#9
«open АДРЕС РОУТЕРА» — это ip адрес WAN ?
обычно это «open 192.168.1.1»
-
#10
Под 7-кой работает прекрасно, но в 10ке почему что скрипт отрабатывает команды не правильно(пытается в командную строку телнета вставить белеберду). Пользуется кто? как переделать под 10-ку
Раскладку клавиатуры попробуйте поменять на стандартную английскую.
-
#11
Друзья telnet не может открыть роутер Asus RT11 через tp link без проблем заходит, в чем может проблема быть?
-
#12
Привет!
столкнулся с такой проблемой, почемуто при запуске telnet вместо команды open 192.168.1.1 пишет /5, 192.168.1.1
как можно это подправить?
-
#13
Сам затупил, команды из скриптов вводятся в раскладке по умолчанию. По умолчанию была русская раскладка клавиатуры, поменял на английскую и все исправилось )
-
#14
Почему авторы подобных тем забывают указать очень важную деталь, что этот скрипт работает только с теми роутерами в которых есть поддержка функции telnet! Возможно для кого-то открою тайну, но во многих моделях вообще нет этой функции!
-
#15
Хотел поделиться скриптами автоматической перезагрузки роутера при падении сети. Работает уже более месяца. У меня zyxel keenetic и модем мегафон.
1. Добавить telnet.exe в стандартных средствах винды.
2. Создать «keenetic-reboot.vbs» скрипт. Листинг: http://pastebin.com/ZSQHzxaP
3. Создать батник и добавить в задания винды на старт каждые 30 минут. http://pastebin.com/rCTh8zvc
4. Положить оба файла в корень диска C:/Принцип действия прост, каждый 30 минут стартует батник, который пингует mail.ru, если недоступен, то запускает скрипт, который по телнету перегружает роутер.
Спасибо огромное! Легко и просто!
Вот только маленькая ошибка,которую не сразу заметил: В ридмихе keenetiС, а в батнике keenetiK . Естественно стало ругаться что не может найти скрипт.
-
#16
Подскажите плиз знающие, реально такой скрипт внедрить в линуксе? Конкретно в хайв ос
-
#17
Хотел поделиться скриптами автоматической перезагрузки роутера при падении сети. Работает уже более месяца. У меня zyxel keenetic и модем мегафон.
1. Добавить telnet.exe в стандартных средствах винды.
2. Создать «keenetic-reboot.vbs» скрипт. Листинг: http://pastebin.com/ZSQHzxaP
3. Создать батник и добавить в задания винды на старт каждые 30 минут. http://pastebin.com/rCTh8zvc
4. Положить оба файла в корень диска C:/Принцип действия прост, каждый 30 минут стартует батник, который пингует mail.ru, если недоступен, то запускает скрипт, который по телнету перегружает роутер.
У меня в вебке модема есть функции автоматического перезапуска.
-
#18
У меня в вебке модема есть функции автоматического перезапуска.
модема или роутера?
Скрипт перезагрузки ADSL модема при потере связи Команда перезагрузки роутера
Долго мучался, ибо мой роутер ZyXEL P-330W иногда вырубал сеть (PPPoE). Оказалось была включена опция «поддерживать подключение», переставил на «подключение по запросу» — выправилось. Потом видимо пров как-то хитро ресетил сервер, что роутер не понимал, что соединение потеряно и делал вид, что все Ок, а на самом деле инета не было. Начал искать, как ресетить роутер программно, а не выдергивать его каждый раз из сети. Нарывался на форумы, где народ задавал такой же вопрос и на 5 страниц потом остальные удивлялись на хрена это нужно и предлагали выключатель припаять в разрыв цепи питания роутера. Удивляюсь на таких людей, не знаешь — так помолчи, за умного сойдешь. Причем это на форумах ixbt и ru-board.
Копался, копался — нашел. Один хороший товарищ поделился скриптом перезагрузки роутера в случае отсутствия инета. Как всегда, все гениальное просто. Ресетится роутер через телнет командой Reset или Reboot или Reload- от модели зависит, а скриптик дан ниже. К сожалению на форумах одинаковое сообщение от разных авторов, поэтому автора тяжело определить, но все равно БОЛЬШОЕ ЕМУ ЧЕЛОВЕЧЕСКОЕ СПАСИБО.
Итак, проблема: ADSL-модем иногда (то реже раза в неделю, то несколько раз в сутки) теряет коннект так, что не может его переподнять самостоятельно. В моем случае — модем D-Link, у Томпсон, судя по отзывам эксплуатирующих, проблема не менее редкая.
Что меня расстраивало, т.к. иногда не мог при необходимости зайти с работы на домашний комп, или поставленные на день закачки не докачивались к вечеру из за того, что связь обрывалась утром.
Итак, модем настроен в режиме роутера, раз в пол-часа планировщик запускает скрипт, проверяющий успешное прохождение pingов до указанного сервера, при непрохождении — заходит на роутер через telnet и отправляет команду перезагрузки.
Собственно, скрипт (modem.vbs):
Код:
Function PcOnline (strComputer)
‘Check if the remote machine is online.
Dim objPing,objStatus
Dim TextStream, TimeVar
Dim fso, tf
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objPing = GetObject(«winmgmts:{impersonationLevel=i
ExecQuery(«select Replysize from Win32_PingStatus where address = ‘» & strComputer & «‘»)
For Each objStatus in objPing
If IsNull(objStatus.ReplySize) Then
PcOnline=False
‘Пишем Лог файл
Set fso = CreateObject(«Scripting.FileSystemObject»
If (fso.FileExists(«c:\testfile.txt»)) Then
Set tf = fso.OpenTextFile(«c:\testfile.txt»,ForAp
tf.WriteLine(Now() & » » & strComputer & » is down «)
tf.Close()
Set fso = Nothing
Set tf = Nothing
Else
Set tf = fso.CreateTextFile(«c:\testfile.txt»,For
tf.WriteLine(Now() & » » & strComputer & » is down «)
tf.Close()
Set fso = Nothing
Set tf = Nothing
End If
‘ Конец Лог файла
Else
PcOnline = True
‘Wscript.Echo strComputer & » is responding to a ping «
End If
Next
Set objPing=Nothing
Set objStatus=Nothing
End Function
Dim fsot, tft
Const ForReading = 1, ForWriting = 2, ForAppending = 8
If PcOnline(«www.ya.ru»)_
OR PcOnline(«www.inetcom.ru»)_
Then
‘ если статус = 0, пустая строка — другое
Wscript.Echo «all ok»
Set fsot = CreateObject(«Scripting.FileSystemObject»
Set tft = fsot.OpenTextFile(«c:\testfile.txt»,ForA
tft.WriteLine(«——————«)
tft.Close()
Set fsot = Nothing
Set tft= Nothing
WScript.Quit 0
Else
‘WScript.Echo «Reboot»
‘Set oShell = WScript.CreateObject(«WScript.Shell»)
‘oShell.Run «telnet.exe 1.1.0.1»
‘WScript.Sleep 2000
‘oShell.SendKeys «user» & chr(13)
‘WScript.Sleep 2000
‘oShell.SendKeys «password» & chr(13)
‘WScript.Sleep 2000
‘oShell.SendKeys «reload» & chr(13)
‘WScript.Sleep 2000
‘oShell.SendKeys «^({]})q» & chr(13)
‘WScript.Quit 255
End If
Set fsot = CreateObject(«Scripting.FileSystemObject»
Set tft = fsot.OpenTextFile(«c:\testfile.txt»,ForA
tft.WriteLine(«——————«)
tft.Close()
Set fsot = Nothing
Set tft= Nothing
Пояснения:
turbo.uralcom. com — сервер, при отсутствии пинг-ответа которого считаем, что есть проблема или с модемом или с коннектом. нельзя использовать сервера microsoft, т.к. они на пинги не отвечают. (Лучше вбить адрес гейта)
user — логин админа ADSL модема, указан в документации, для D-Link — админ
password — пароль админа модема, указан в документации или такой, как вы установили.
Использование:
сохранить в файл с расширением .vbs, добавить этот файл в Панель управления -> Назначенные задания -> Добавить задание
на периодичность запуска, скажем, в 30 минут.
Теоретически, роутер – это устройство, которое «по природе своей» рассчитано на постоянную работу. Поэтому многие производители даже не устанавливают на девайсе кнопку отключения питания. К сожалению, на практике все далеко не так «радужно»: при использовании маршрутизаторов часто возникают ситуации с «провисанием» соединения, отключением отдельных компонентов и т.п. «недоразумения». В большинстве случаев спасает спасает именно перезагрузка устройства.
Поэтому в данной статье мы рассмотрим все способы, как перезагрузить роутеры tp link, zyxel keenetic, d link и asus – наиболее популярные модели маршрутизаторов.
Как перезагрузить маршрутизатор через настройки роутера?
Самый простой и удобный способ перезагрузки роутера – через web-интерфейс устройства.
Как перезагрузить вай фай роутер tp link?
Чтобы перезагрузить маршрутизатор tp-link через компьютер:
- – в браузере откройте адрес 192.168.0.1: «login» и «password»– «admin»;
- – далее «System Tools» -«Reboot»;
- – для русскоязычной версии «Системные инструменты» – «Перезагрузка».

Как перезагрузить роутер d link?
- – в браузере введите адрес 192.168.1.1: «login» и «password»– «admin»;
- – далее «Система» – «Перезагрузить» или «Сохранить и перезагрузить»

Как перезагрузить роутер asus?
- – в браузере откройте адрес 192.168.0.1: «login» и «password»– «admin»;
- – найдите кнопку «Перезагрузить» – обычно она находится в правом верхнем углу.

Как перезагрузить роутер zyxel keenetic?
- – аналогично в адресно строке введите 192.168.0.1: «login» и «password»– «admin»;
- – «Tools» – «Restart» – «Restart»

Из вышеописанных примеров видно, что для всех моделей маршрутизаторов необходимо выполнить практически идентичные шаги для удаленной перезагрузки роутера: зайти в настройки роутера, найти команду «Перезагрузка» и запустить перезагрузку девайса.
Как удалённо перезагрузить роутер через командную строку?
Выше мы рассмотрели перезагрузку роутера через веб-интерфейс самого маршрутизатора. Однако это далеко не единственное возможное решение: если ваш роутер поддерживает консоль «Telnet», для удалённой перезагрузки требуется сделать следующее:
- – сперва убедитесь, что в настройках роутера включена консоль «Telnet»;
- – далее зайдите в командную строку («Выполнить» – «cmd») и введите команду «telnet»;
- – для подключения к роутеру введите «open xxx.xxx.xxx.xxx» (вместо «х» укажите адрес «Шлюза по умолчанию»);
- – далее потребуется поочередно ввести «login» и «password» вашего роутера;
- – откроется консоль для отображения информации о доступных командах: введите «help»

Обычно для перезагрузки роутера требуется ввести команды «reboot» или «restart».
Кроме того, для удалённой перезагрузки можно воспользоваться специальными мониторинг–утилитами: например, «MonConnInet» (программа платная). Данный софт позволяет производить проверку интернет соединения, отправляя «ping» запросы на указанные адреса (не более 5). В случае возникновения ошибки ответного запроса, программа производит перезагрузку роутера: соответственно, необходимо выбрать данный параметр в настройках и ввести «login» и «password» маршрутизатора.
Как удаленно перезагрузить роутер через компьютер?
Данный способ подойдет в случае, когда необходимо перезагрузить роутер удалённо, но не используя при этом web-браузер.
Ниже представлен скрипт для автоматической перезагрузки роутера при отсутствии соединения. Скрипт проверен на роутерах моделей D-link и Zyxel.
- создайте новый файл в «Блокноте» или в текстовом редакторе «Notepad++» (рекомендуем остановиться на последнем);
- сам скрипт выглядит следующим образом:
- «Set oShell = WScript.CreateObject(“WScript.Shell”)
- oShell.Run “telnet.exe 192.168.1.1”
- WScript.Sleep 1000
- oShell.SendKeys “user” & chr(13) – логин роутера
- WScript.Sleep 1000
- oShell.SendKeys “password” & chr(13) – соответственно, пароль от интерфейса роутера
- WScript.Sleep 1000
- oShell.SendKeys “reboot” & chr(13)»
- после этого, сохраните файл с расширением .vbs (к примеру, router.vbs) – для этого расширения обязательно включение английской раскладки клавиатуры;
- теперь остается только добавить файл в «Планировщик задач» и установить очередность и время запуска программы.
Повторимся, скрипт проверен на роутерах D-link и Zyxel – текст скрипта для других моделей может отличаться.
По данному скрипту осуществляется повторяющийся запрос на ответ сервера, при отсутствии которого происходит перезагрузка роутера благодаря консоли «Telnet».
Если вы никогда «не сталкивались» с кодом – понятнее и надёжнее для перезагрузки роутера воспользоваться вариантом с интерфейсом маршрутизатора.
В заключение стоит отметить, что сторонников перезагрузки роутеров немного: кто-то ссылается на то, что если бы это требовалось, то производители оставили бы кнопку перезагрузки, кто-то считает, что это может навредить самому устройству. Но факт остаётся фактом: после перезагрузки роутера число ошибок уменьшается, и сетевое соединение в большинстве случаев восстанавливается
- Распечатать
Оцените статью:
- 5
- 4
- 3
- 2
- 1
(5 голосов, среднее: 2.8 из 5)
Поделитесь с друзьями!



