Скрипт для перезагрузки роутера asus

Перейти к содержимому

На старых прошивках маршрутизаторов Asus часто замечал, что не полностью открывается веб-интерфейс, отображается не все меню, соответственно настроить его невозможно и при удаленном доступе перезагрузить тоже нельзя, так как не отображается кнопка перезагрузки.
Поэтому взял маршрутизатор Asus RT-N12E, запустил сниффер Wireshark, открыл веб-интерфейс маршрутизатора и нажал кнопку перезагрузки.
В перехваченных пакетах было видно что для перезагрузки выполняется файл Reboot.asp в корневой директории.

Отсюда получился такой скрипт для перезагрузки маршрутизаторов Asus:

#!/bin/sh
ROUTER_IP="192.168.1.1"
USERNAME="admin"
PASSWORD="admin"

# exit if router is down
ping -q -c 1 "$ROUTER_IP" > /dev/null || exit

curl --basic --user "$USERNAME:$PASSWORD" -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" --refer "http://$ROUTER_IP" "$ROUTER_IP/Reboot.asp"

Содержимое скрипта поместим в новый файл, например используя редактор nano («CTRL+X» для выходя и «y» для сохранения изменений):

nano file.sh

Сделаем его исполняемым:

chmod 777 file.sh

После этого выполним:

./file.sh

Также можно в браузере вручную открыть ссылку http://192.168.1.1/Reboot.asp если необходимо один раз перезагрузить маршрутизатор.

Если у вас есть роутер ASUS или другой с прошивкой от Олега, то эта записка для вас. Недавно у меня возникла трудность, которую никак не получалось решить. VPN-сессия зависала, при этом VPN-соединение оставалось подключено. Роутер не мог понять, что надо переподключится.  Приходилось каждый раз вручную делать перезагрузку роутера, согласитесь, это долгий и утомительный процесс. 

linux-code

Я покопался в интернете, оказалось  я такой не один и проблема довольно масштабна среди “роутороводов”. Наши провайдеры не особо жалуют пользователей с роутерами, в большинстве случаев после ответа на вопрос “какая у вас операционная система” суппорт умолкает.

Я не задавался и продолжал искать,  но нигде не было универсального решения данной проблемы. Тогда я подумал, мой роутер основан на 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 с прошивкой от Олега.
По сути это уже полнофункционал ьный линукс, ;-) есть доступ к командной строке по SSH.
Советую посетить этот форум. (Ахтунг, там есть проблема с кодировкой нужно поставить Кириллицу Windows-1254)
http://wl500g.info/forumdisplay.php?f=86

 Игорь 01.11.2010 13:48
Спасибо, получается, что роутер D-Link превращается в ASUS :eek:

 Илья 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ч.

Теоретически, роутер – это устройство, которое «по природе своей» рассчитано на постоянную работу. Поэтому многие производители даже не устанавливают на девайсе кнопку отключения питания. К сожалению, на практике все далеко не так «радужно»: при использовании маршрутизаторов часто возникают ситуации с «провисанием» соединения, отключением отдельных компонентов и т.п. «недоразумения». В большинстве случаев спасает спасает именно перезагрузка устройства.

Поэтому в данной статье мы рассмотрим все способы, как перезагрузить роутеры tp link, zyxel keenetic, d link и asus – наиболее популярные модели маршрутизаторов.

Как перезагрузить маршрутизатор через настройки роутера?

Самый простой и удобный способ перезагрузки роутера – через web-интерфейс устройства.

Как перезагрузить вай фай роутер tp link?

Чтобы перезагрузить маршрутизатор tp-link через компьютер:

  • – в браузере откройте адрес 192.168.0.1: «login» и «password»– «admin»;
  • – далее «System Tools» -«Reboot»;
  • – для русскоязычной версии «Системные инструменты» – «Перезагрузка».
как перезагрузить роутер tp-link tl-wr841n

 Как перезагрузить роутер d link?

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

 Как перезагрузить роутер asus?

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

 Как перезагрузить роутер 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».

Если вы никогда «не сталкивались» с кодом – понятнее и надёжнее для перезагрузки роутера воспользоваться вариантом с интерфейсом маршрутизатора.

В заключение стоит отметить, что сторонников перезагрузки роутеров немного: кто-то ссылается на то, что если бы это требовалось, то производители оставили бы кнопку перезагрузки, кто-то считает, что это может навредить самому устройству. Но факт остаётся фактом: после перезагрузки роутера число ошибок уменьшается, и сетевое соединение в большинстве случаев восстанавливается

  • Распечатать

Оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(5 голосов, среднее: 2.8 из 5)

Поделитесь с друзьями!

image
Дома, как, как и у многих, интернет раздает роутер.
Купленный в свое время 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 минут проверять соединение с интернет и в случае срыва коннекта перегружать роутер/модем.

Option Explicit

Dim CheckPeriodSuccess, CheckPeriodFailure, CheckTimes, CheckTimesPeriod, oShell, LocalIP, UserName, Password, Client, Times

‘ =====================================================================

‘ Данные аутентификации
LocalIP = «192.168.1.1»
UserName = «admin»
Password = «pass»

‘ Периодичность проверки пинга в мсек. (если подключение есть)
CheckPeriodSuccess = 10000

‘ Задержка перед повторной проверкой, если роутер был перезагружен
CheckPeriodFailure = 120000

‘ Кол-во контрольных проверок пинга (пакетов подряд)
CheckTimes = 3
‘ с интервалом (мсек.)
CheckTimesPeriod = 1000

‘ Путь к программе-клиенту (например plink.exe)
Client = «telnet.exe»

‘ =====================================================================

Set oShell = WScript.CreateObject(«WScript.Shell»)

Do
if CheckRouter() then
‘ если все ОК
WScript.Sleep CheckPeriodSuccess
else
‘ если произведена перезагрузка
WScript.Sleep CheckPeriodFailure
end if
Loop

Function CheckRouter()
Dim Connected, ProcessID

Connected = false

Times = CheckTimes
Do
If IsOnline(«www.ya.ru») then
Connected = true
elseif IsOnline(«8.8.8.8») Then
Connected = true
end if
if not Connected then
if Times > 0 then
Times = Times — 1
WScript.Sleep CheckTimesPeriod
end if
end if
Loop while Times and (not Connected)

if Connected then
CheckRouter = true
else
ProcessID = CreateProcess(Client & » » & LocalIP, 1)

if 0 <> ProcessID then
WScript.Sleep 2000
oShell.AppActivate ProcessID
WScript.Sleep 500
oShell.SendKeys UserName & chr(13)
WScript.Sleep 500
oShell.SendKeys Password & chr(13)
WScript.Sleep 500
oShell.SendKeys «reboot» & chr(13)
WScript.Sleep 500
oShell.SendKeys «^]»
WScript.Sleep 100
oShell.SendKeys «quit» & chr(13)
WScript.Sleep 100
call TerminateByPID (ProcessID)
end if
End If
End Function

Sub TerminateByPID(PID)
Dim oWMISvc, oProcess, colProcesses
Set oWMISvc = GetObject(«winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2»)
set colProcesses = oWMISvc.ExecQuery(«Select * from Win32_Process WHERE ProcessId=» & PID)
if colProcesses.Count > 0 then
For each oProcess in colProcesses
call oProcess.Terminate
Next
end if
End Sub

Function IsOnline (Address)
On Error Resume Next
Dim objPing, objStatus
Set objPing = GetObject(«winmgmts:{impersonationLevel=impersonate}»)._
ExecQuery(«select Replysize from Win32_PingStatus where address = ‘» & Address & «‘»)

For Each objStatus in objPing
IsOnline = not IsNull(objStatus.ReplySize) or IsOnline
Next
End Function

Function CreateProcess(cmd, WindowStyle) ‘вернет ProcessID
Dim objWMIService, objStartup, objConfig, objProcess, PID
Const SW_HIDDEN = 0
Const SW_NORMAL = 1
Set objWMIService = GetObject(«winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2»)
Set objStartup = objWMIService.Get(«Win32_ProcessStartup»)
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = WindowStyle
Set objProcess = GetObject(«winmgmts:root\cimv2:Win32_Process»)
call objProcess.Create (cmd, null, objConfig, PID)
if not IsNull (PID) then CreateProcess = PID else CreateProcess = 0
End Function

Другие наши интересноые статьи:

  • Слабая раздача wifi с роутера причина
  • Скорость роутера d link dsl 2640u
  • Скрипт для перезагрузки роутера при отсутствии интернета
  • Слабая защита на роутере ростелеком
  • Скрипт для перезагрузки роутера tp link

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии