Автоматическая перезагрузка маршрутизатора
В данной короткой заметке я расскажу о функции автоматической перезагрузки маршрутизатора D-Link, которая была добавлена в последних версиях русских Firmware современных моделей маршрутизаторов.
В каких случаях может быть полезна эта функция:
— когда у вашего провайдера периодически «подвисает» сессия вашего соединения;
— когда через сутки (или другое достаточно продолжительное время) падает скорость интернет-подключения и перезагрузка маршрутизатора помогает восстановить прежние скорости;
— когда переполняются какие-либо буфера памяти маршрутизатора при обработке вашего трафика;
— когда периодически появляются «необъяснимые глюки» в работе маршрутизатора;
— когда просто Вам так хочется.
Включение функции автоматической перезагрузки маршрутизатора, конечно же, не решает самой проблемы, но существенно облегчает жизнь пользователя. Тем более, что часто не получается выявить причину самой проблемы, или же доказать провайдеру о наличии проблемы.
В Firmware версий 3.х.х для включения указанной функции, необходимо открыть страницу «Конфигурация» пункта «Система» левого меню маршрутизатора. Далее найти функцию «Автоматическая перезагрузка», перевести переключатель в положение «Включить», установить желаемый период перезагрузки в поле «Период (в секундах)» и нажать кнопку «Сохранить».
В Firmware 4.х.х (на данный момент имеются для DIR-853, DIR-878 и DIR-882) указанная функция реализована через функционал работы по расписанию. Для её включения необходимо открыть страницу «Расписание» пункта «Система» левого меню маршрутизатора. Далее в разделе «Авто перезагрузка» нажать «Задать расписание».
В открывшемся окошке точками выбрать режим настройки «Упрощенный режим» или же «Расширенный режим». В упрощённом режиме из выпадающего списка «Интервал выполнения» выбрать желаемый интервал «Каждый день», «Каждую неделю» или «Каждый месяц», и сделать соответствующие настройки дней и времени. Для сохранения выполненных изменений нажать надпись «Сохранить». Те же самые настройки можно сделать и в расширенном режиме.
Автоматическая перезагрузка роутера tp link
Как оказалось, в гигабитном роутере TP-LINK TL-WR1042ND нет управления при помощи консоли. Но роутеры, как известно, иногда виснут. Точнее, сам роутер продолжает работать и откликаться на команды управления из админки и VPN показывает, что он подключен, но интернет при этом не доступен. Иногда это происходит по вине самого устройства, иногда проблемы со стороны провайдера, и перезагрузка часто решает проблему. При чем, желательно, чтобы это происходило автоматически. Поэтому было принято решение перегружать роутер при помощи HTTP GET запроса…
После непродолжительного исследования были найдены такие команды:
Разорвать VPN соединение:
Подключить VPN:
Перезагрузить роутер:
Но, как оказалось, управлять этими командами роутером напрямую не получается. Они работают только при авторизации в админке роутера через браузер и то только можно увидеть их выполнение с помощью firebug, а напрямую, при вводе в адресную строку работает только команды дисконнекта/коннекта VPN. Команды срабатывают, но при этом все равно выдается ошибка. Перезагрузить роутер таким образом не получается.
Мгновенно выскакивает «You have no authority to access this router!» и ничего не происходит.
Самое интересное, что так:
выдает ту же ошибку, но с некоторой задержкой, а запрос выполняется — т.е. wan отключается.
При этом в админку входит по ссылке с прописанной авторизацией: http://login:pass@192.168.0.1 и управление из админки дальше работает!
Перезагрузка из Linux
Меня больше интересовала перезагрузка из линукса, но такая команда не срабатывала:
ошибка:
К тому же, при помощи wget не удавалось даже выполнить Disconnect/Connect VPN.
На русском форуме TP-LINK была открыта тема, но в результате обсуждения, решения найти не удалось.
Английская техподдержка на запрос «How i can reboot my device by bash script?»
ответила следующее: «this is not possible to reboot devices in a such way».
Ticket#2013101610000131
Решение все же было найдено. Не вдаваясь в подробности скажу что роутер при GET запросе проверяет:
- Http basic авторизацию.
- User-Agent браузера.
- Корректное поле рефер, которое всегда будет просто http://IP адресом роутера, т.к. роутер использует редиректы.
Cookie для авторизации не используются.
С этим всем отлично справляется команда curl.
Скрипт перезагрузки роутера
Итак, привожу скрипт перезагрузки роутера, который у меня получился:
Соответственно, скрипт реконнекта VPN:
Поставил в cron скрипт реконнекта при отсутствии пинга dns гугля — проверка каждые 3 минуты.
Скрипт перезагрузки проверяет наличие интернета каждые 15 минут.
login:pass, конечно, нужно будет поставить свои. Файлы скриптов назвать, например, tplink_reboot.sh и tplink_reconnect.sh, сохранить на сервере, дать права на выполнение и добавить в планировщик.
Уже пару раз выручило:
tplink_reconnect.zip
tplink_reboot.zip
PS:
на форуме https://forum.tp-linkru.ru Scorokhod поделился своим вариантом перезагрузки роутера при помощи WGET, за что ему огромное спасибо:
Вместо «login», «password» и «router_ip» подставить соответственно логин, пароль и IP маршрутизатора без кавычек и процентов 🙂
WGET для Windows можно взять здесь: http://gnuwin32.sourceforge.net/packages/wget.htm, качать нужно «Complete package, except sources — Setup».
Перезагрузка из Windows
Готовая сборка Wget + Bat скрипт для перезагрузки (только перегружает):
скачать tplink_reboot_wget.zip (подходит для большинства моделей Tplink, не только WR1042ND)
Перезагрузка из Android
(спасибо за этот код neolead)
Для андроид в данном изложении требуется root. Если нет рута.. то в конце checknet заменить на step1
Установить Busybox https://play.google.com/store/apps/deta … on.busybox
и Android Terminal emulator https://play.google.com/store/apps/deta … ndroidterm
—to do list
Перемонтировать/system на запись «su -c mount rw,remount /system»
Поместить допустим в /system/script,»su -c chmod 0777 /system/script/»
Дать скрипту права на исполнение «su -c chmod 0755 /system/script/ping2.sh»
Добавить в автозапуск в настройках терминала.
у меня работает в машине как переподключение,затем перезагрузка wifi после трёх фейлов…
One thought on “ Скрипт удалённой перезагрузки WI-FI роутера TP-LINK TL-WR1042ND ”
Спасибо, очень интересная статья и полезная.
В новой версии опять поменяли….. (
Что именно изменилось, что-то не работает?
у меня каждый день в 00.04 перегружается роутер и пропадает сеть на 1 минуту. модель TP link — TL-WR340GD. провайдер говорит что к ним это никакого дела не имеет. в настройках роутера по этому времени ничего нету. помогите разобраться — заранее благодарен (можете опубликовать может у кого то тож такие проблемы)
попробуй сменить время во всей квартире и в роутере. если будет по новому времени перезагружаться значит провайдер не виноват!
Большое спасибо!
Работает и в случае с TL-WR841N.
спасибо. полезная инфа.
дак под виндоус то как запускать?
ну скачал, ну установил wget а дальше то что? что куда вводить чтобы заработало?
anatoly, wget работает в режиме командой строки. Т.е. для использования можно или написать .bat файл, или создать ярлык с параметрами.
как проверть работоспособность вгет?
c:\Program Files (x86)\GnuWin32\bin>wget.bat
c:\Program Files (x86)\GnuWin32\bin>wget —http-user=xxx —http-password=xxx
—user-agent=»Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, li
ke Gecko) Chrome/31.0.1650.63 Safari/537.36″ —referer=http://192.168.1.1/userRp
m/DateTimeCfgRpm.htm http:/192.168.1.1/userRpm/SysRebootRpm.htm?Reboot=1
SYSTEM_WGETRC = c:/progra
1/wget/etc/wgetrc
syswgetrc = c:\Program Files (x86)\GnuWin32/etc/wgetrc
—2015-04-07 18:43:55— ftp://http//192.168.1.1/userRpm/SysRebootRpm.htm?Reboot
=1
=> `.listing’
Распознаётся http… сбой: No data record of requested type.
wget: невозможно распознать адрес `http’
unlink: No such file or directory
ну и че он ftp:// добавил перед http:// ?
проблему решил удалив в коде скрипта «%».
Вечером проверю. Я все делал в Ubuntu и использовал curl, а не wget. С wget у меня изначально не получалось. Проверю под Windows — отпишусь.
Так же не работает, вот лог из cmd, помогите пожалуйста
C:\Users\bmite>wget —http-user=%admin% —http-password=%admin% —user-agent=»Mo
zilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/
31.0.1650.63 Safari/537.36″ —referer=http://%192.168.10.1%/userRpm/SysRebootRpm
.htm http://%192.168.10.1%/userRpm/SysRebootRpm.htm?Reboot=1
SYSTEM_WGETRC = c:/progra
1/wget/etc/wgetrc
syswgetrc = C:\Program Files (x86)\GnuWin32/etc/wgetrc
—2015-04-08 12:57:49— http://%192.168.10.1%25/userRpm/SysRebootRpm.htm?Reboot
=1
Распознаётся 312.168.10.1%… сбой: No data record of requested type.
wget: невозможно распознать адрес `↓2.168.10.1%’
У Вас вместо http://%192.168.10.1% должно быть везде http://192.168.10.1
А вместо %admin% просто admin
Не совсем понятно куда эти скрипты ставить? Брать VDS?
Можете запускать со своего компьютера или локального сервера.
Я хотел сказать с отдельного компьютера — сервера, который работает в режиме 24/7. Хотя, не у всех такое имеется, но для них и автоматическая перезагрузка роутера не так важна.
Для wget команды, возможно, потребуется заменить —http-password на —http-passwd
Спасибо большое.
tplink MR3020. На прошивке 130xxx работает вариант с wget, проверил на двух роутерах с прошивками 130123 и 130-какой-то (не помню).
В серии 140xxx через C# и сниффер выкручивались.
Соврал по поводу прошивок. Проверял на 140123 и 130xxx. На 140408 уже писали на C#
Добавил в конце статьи архив, содержащий готовую сборку Wget + bat скрипт автоматической перезагрузки.
1. Если не поправить все некорректно указанные в примере двойные кавычки (» и »), возникает ошибка:
ping: unknown host «8.8.8.8»
ping: unknown host «192.168.1.2»
2. Если кавычки поправить, возникает другая ошибка:
13: /home/tvbung/Загрузки/router.sh: Syntax error: «(» unexpected
Я имел в виду скрипт для перезагрузки роутера
Скачайте архив в конце статьи — там все корректно работает.
Спасибо — не заметил вложени
Спасибо! Полезная статья
Наконец-то оформил статью для удобочитаемого вида. Кроме того, проверил скрипт перезагрузки из Windows на роутере TL-WR840 — работает!
Здравствуйте. Скачал, распаковал, в Reboot Router указал логин и пароль (admin,admin), запускаю wget.exe от имени администратора, ничего не происходит. Windows 10, TD-W3151N. Роутер не подходящий? Или что-то не так делаю?
Запускать нужно Reboot Router, из него происходит вызов wget.exe с нужными параметрами.
Права админа в Windows для этого скрипта необязательны.
1. Задавайте Login и Password без кавычек.
set Login=admin
set Password=admin
2. Попробуйте варианты задачи IP:
set IP=192.168.1.1
или
set IP=192.168.0.1
Спасибо большое, искал очень долго и вот помогла ваша «Готовая сборка». главное все в файле заменить)
у меня не работает
Запускаю, выдаёт это:
Но роутер не ребутится.
Заполните правильно(!) в файле Reboot Router.bat следующие переменные:
set IP=192.168.0.1
set Login=admin
set Password=admin
А можно глянуть скрипт проверки и перезагрузки по крону.
Спасибо.
Ссылки на архив с готовыми скриптами находятся в конце статьи.
Вот такой вопрос…
Я запустил этот самый bat для rebootА роутера и ребут произошёл.
Захотел сделать это в виде ежедневной задачи и всё настроил.
Но почему-то, сколько бы я сейчас не пробовал запустить этот скрипт заново, ничего не выходит!
Мистика какая-то!
Помогите!
Возможно, Вы в диспетчере задач (планировщике) не указали папку в которой лежат исполняемые файлы.
То же самое и у меня происходит — в ручном режиме скрипт работает, и ребутит роутер, но если его запускает планировщик — то выпадает черное окошко о ЯКОБЫ выполнении скрипта, но роутер по факту не перегружается… чо за фигня.
Разобрался )) Автор прав — нужно указать не только САМ бат-файл, а еще и папку с исполняемыми файлами, чтобы все эти фалы были задействованы вместе! Все работает, СПАСИБО!
Не проходит перезагрузка в роутере mr3020. Операционная система: windows 7. Параметры настроены верно, т.е. и ip и логин с паролем. Но вот перезагрузки почему-то не происходит 🙁
На mr3020 скрипт не тестировался. Скорее всего, там совершенно другая админка с другими адресами ссылок на перезагрузку.
Спасибо за ответ! Да, на другом Tp-link роутере работает вполне норм. Не подскажете ли, в каком направлении копать, чтобы поправить ссылку для именно этой марки роутера? Где можно эту ссылку посмотреть, чтобы изменить код?
Просто роутер будет стоять у людей, скажем так, несколько далёких от техники 🙂 Поэтому и ищу решение для перезагрузки скриптом.
У меня нет mr3020, поэтому я не смогу переписать и отладить скрипт под него. В моем скрипте строка перезагрузки задается «/userRpm/SysRebootRpm.htm?Reboot=reboot». Насколько я понял, mr3020 поддерживает терминальное подключение, что автоматически снимает необходимость использования программы curl или wget для доступа по http. Вам не подойдет скрипт с этой страницы, точнее, вероятно, его можно адаптировать, но можно проще. Достаточно просто написать скрипт в bat файле. Когда-то давно писал такой скрипт для Dlink.
П.С.
Здесь в комментариях mustik писал, что «tplink MR3020 на прошивке 130xxx работает вариант с wget, проверил на двух роутерах с прошивками 140123 и 130xxx. В серии 140408 через C# и сниффер выкручивались.» Т.е. мой скрипт с этой страницы на новой прошивке запустить не удалось.
Может, покажете скрипт для dlink? Я бы постарался адаптировать. Просто вы писали в статье «После непродолжительного исследования были найдены такие команды», но я не совсем понимаю, что скрывается под словом «исследование» 🙂 В какую сторону исследовать? 🙂 Откуда можно выцепить эту команду? Мне хотя бы примерно знать, в какую сторону копать нужно, а там бы уже постарался бы найти.
Пока что откопал только Bash скрипт для линукса (ubuntu/debian). Хотя когда-то делал и для обычного bat/cmd через telnet без vbs скриптов.
#!/bin/sh
WATCHED_IP=»www.ru»
MODEM_IP=»192.168.1.1″
USERNAME=»admin»
PASSWORD=»»
# watch for remote host
ping -q -c 1 «$WATCHED_IP» > /dev/null && exit
# exit if modem is down
ping -q -c 1 «$MODEM_IP» > /dev/null || exit
expect — »
send -s «reboot\r»
expect -exact «The system shell is being reset. Please wait. »
exit
EOF
Скачал, запустил — все работает! Но как поместить .bat в планировщик задач с условием выполнения при обрыве связи мозгов не хватает.
Не понимаю ! Запуск .bat из папки нормальный. Из планировщика-никакой реакции. Путь к файлу .bat прописан через «обзор» так что неправильным быть не может. Исполняемый файл лежит в одной папке с .bat. что еще может быть не так ?
Укажите в планировщике рабочую папку, в которой лежит скрипт.
прошу прощения! Первый раз работал с планировщиком и не обратил внимание на поле «рабочая папка». Еще бы условие как то подставить при обрыве связи. Не может быть, чтобы в windows в каком нибудь журнале это не отражалось
Проверка на обрыв связи добавьте в начало скрипта:
ping -q -c 1 «8.8.8.8» > /dev/null && exit
Теперь Вам нужно только установить интервал выполнения в планировщике — каждые 5, 10 или 15 минут — на Ваше усмотрение. Если пинг не проходит — скрипт перезагрузит роутер.
Спасибо !
Но, к сожалению, 5 минут меня не устраивают. Специфика работы требует не более одной.
Поставьте в планировщике сколько угодно. Будет каждую минуту проверять. Хотя, проблем может добавить т.к. модем не успеет перегрузиться за минуту и поднять соединение, а скрипт его повторно уже в ребут отправит.
Попробовал в планировщике привязаться к событию BROWSER код 8033. Интересно, что при отключении питания роутера сразу проходит команда на перезагрузку, а при отключении кабеля интернета планировщик не реагирует, несмотря на то, что событие в журнале появляется.
Ваш вопрос выходит за рамки данной темы.
Согласен, тем более, что проблему решил.
Спасибо автору за статью, реально помогла )) перерыл кучу сайтов ниче не найти или не работает (( а тут все гуд ..
только про обрыв связи не понял… сюда что ли дописать — Reboot Router.bat
Дай Бог вам здоровья! 🙂
Спасибо
Глядя на все эти мучения убеждаешься, что использование стоковой прошивки — это бег в ластах. В OpenWrt это делается простейшим скриптиком по крону. ИЗНУТРИ роутера (чуствуете разницу?)
Жорик, для данной модели роутера не существует альтернативных прошивок.
Для TPlink Archer C20 скрипт не работает. Wget из под Win ((
tl-mr3420 работает. Спасибо
Заметил изменения в новых прошивках из-за которых не работает скрипт.
Например, прошивка 3.16.9 Build 150514 Rel.39242n для роутера TL-WR842ND.
Если раньше в адресной строке после авторизации было:
http://192.168.0.1/userRpm/Index.htm
то теперь стало:
http://192.168.0.1/SVSJAQKBMSYTYZXB/userRpm/Index.htm
т.е. сделали:
http://192.168.0.1/хешфункция/userRpm/Index.htm
Т.к. «хешфункция» все время разная и генерируется случайно, я пока не знаю как рассчитать команду для перезагрузки, которая тоже должна выглядеть как:
http://192.168.0.1/WXBGWZPAKBCAAQWB/userRpm/SysRebootRpm.htm?Reboot=Reboot
т.е.:
http://192.168.0.1/хешфункция/userRpm/SysRebootRpm.htm?Reboot=Reboot
Refer при этом:
http://192.168.0.1/хешфункция/userRpm/SysRebootRpm.htm
т.е. проверка на корректность Refer уже, скорее всего, происходит, т.к. если после авторизации просто попробовать правильно составить URL для перезагрузки (с учетом хеша) и выполнить его в адресной строке браузера, роутер ругается на отсутствие авторизации и ничего не происходит.
И последнее — для авторизации стали использоваться куки:
Имя: Authorization
Содержимое: Basic%20YWRtaW46MjEyMzJmMjk3YTU3YTVhNzQzODk0YTBlNGE4MDFmYzM%3D
Узел: 192.168.0.1
Путь: /
Срок действия истекает: В конце сессии
К сожалению, все это делает невозможным использование скрипта автоматической перезагрузки.
да, совершенно точно. У меня точка доступа TP-Link TL-WA801ND. Telnet не работает. Никаких конфигураторов или командной строки нет. Данный способ не работает из за генерируемого участка пути.
Остается на выбор — графический скрипт на сервере: запустить браузер — зайти на страницу — перейти в меню перезагрузки — нажать кнопку reboot; Либо второй вариант — управляемая розетка; Ну есть еще третий вариант — искать кастомную прошивку.
Спасибо большое за подсказку !
я сделал (на основе Вашего) 2 скриптика один для проверки сети (каждые 3 минуты) а вторым в час ночи перезагружаю принудительно так как у билайна надо переподключаться чтобы трафик с 1-8 часов не считался .
До этого перезагружал китайский таймер .
работает на ноуте с linux для перезагрузки TP-Link MR-3420v2(3.16.9 Build 150116 Rel.40997n) + ZTE MF823
#!/bin/sh
WATCHED_IP=»8.8.8.8″
ROUTER_IP=»192.168.1.1″
#MODEM_IP=»192.168.8.1″ #Для будущих экспериментов с вебмордой 4G модема
USERNAME=»name» # Вставить от своего роутера
PASSWORD=»password» # Вставить от своего роутера
# DISPLAY=:0 gdialog —msgbox «Скрипт работает !» 25 20 > /dev/null # Проверочная строка
# Проверочная строка для того чтобы знать что скрипт запустился на этапе настройки CRONa
# Выведет на экран окошечко с надписью что скрипт работает
# Проверка наличия инета в частности пинг гугла
ping -q -c 1 «$WATCHED_IP» > /dev/null && exit
# Проверка пингуется ли роутер
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/userRpm/SysRebootRpm.htm?Reboot=reboot»
почему-то двойные кавычки местами заменились двойными стрелочками