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

Обновлено: 05.07.2024

Прежде всего следует знать, что не всякий маршрутизатор позволит вам это сделать. Скорее всего, потребуется предварительно установить одну из альтернативных прошивок (firmware).

Обычно альтернативные прошивки обладают не только более широким диапазоном настроек, но и предоставляют дополнительную функциональность. Мой Netgear WNR3500L v2 с заводской прошивкой показывал весьма посредственные скорости в беспроводной сети, поэтому пришлось установить на него прошивку Tomato от shibby, после чего положение несравненно улучшилась.

Итак, приступим к установке Питона. В данном маршрутизаторе нет встроенного жёсткого диска, но есть USB, к которому можно подключить как Flash-накопитель, так и внешний диск. Я буду использовать Flash.

Подготовка накопителя

Прежде всего отформатируем накопитель в Ext3 и зададим ему метку ENTWARE (по имени системы пакетов для маршрутизаторов).
Использую приложение GParted на своём домашнем компьютере с Ubuntu:

  • Вставить Flash;
  • Открыть GParted;
  • Выбрать Flash в раскрывающемся списке справа вверху;
  • Командой из меню Отмонтировать;
  • Командой из меню Форматировать в Ext3;
  • Командой из меню Установить метку файловой системы — ENTWARE;
  • Нажать кнопку с галочкой «Выполнить все операции».

Подготовка маршрутизатора

Следующие действия производятся через веб-интерфейс.

  • Перейти в USB and NAS, удостовериться, что включены следующие настройки: Core USB Support, USB 2.0 Support, USB Storage Support, Ex2/Ext3 File Systems Support, Automount. Сохранить настройки.
  • Перейти в Administration — Admin access — SSH Daemon. Включить доступ по SSH, нажав на Start Now;
  • Перейти в Administration — Scripts — Init. Включить автоматическое монтирование файловой системы с Flash в /opt при загрузке маршрутизатора, добавив в поле ввода строку, указанную ниже, и сохранив изменение.

Теперь подключимся к маршрутизатору по SSH с основной машины.

  • Выполнить в терминале ssh root@192.168.1.1 . У вас IP-адрес может быть другой, а при запросе пароля следует ввести тот же пароль, что используется для доступа к веб-интерфейсу;
  • Выполнить ту же команду echo "LABEL. , которую вставляли ранее в веб-интерфейсе;
  • Подключить накопитель к маршрутизатору;
  • После этого в выводе команды df уже должно присутствовать упоминание /opt;
  • Устанавливаем пакетную систему entware при помощи следующей команды (команда для устройств на MIPS-процессорах):
  • Устанавливаем Питон: opkg install python3 ;
  • Проверяем доступность: python3 .
Установить можно не только Питон. Полный список доступных пакетов можно получить командой opkg list .

Как вы будете использовать Python далее, зависит только от ваших желаний. Пожалуй, самое очевидное — поднять веб-сервер.

Разорвать VPN соединение:

Подключить VPN:

Перезагрузить роутер:

Но, как оказалось, управлять этими командами роутером напрямую не получается. Они работают только при авторизации в админке роутера через браузер и то только можно увидеть их выполнение с помощью firebug, а напрямую, при вводе в адресную строку работает только команды дисконнекта/коннекта VPN. Команды срабатывают, но при этом все равно выдается ошибка. Перезагрузить роутер таким образом не получается.

Самое интересное, что так:

Перезагрузка из Linux

Меня больше интересовала перезагрузка из линукса, но такая команда не срабатывала:

ошибка:

К тому же, при помощи wget не удавалось даже выполнить Disconnect/Connect VPN.

Решение все же было найдено. Не вдаваясь в подробности скажу что роутер при GET запросе проверяет:

Cookie для авторизации не используются.

С этим всем отлично справляется команда curl.

Скрипт перезагрузки роутера

Итак, привожу скрипт перезагрузки роутера, который у меня получился:

Соответственно, скрипт реконнекта VPN:

login:pass, конечно, нужно будет поставить свои. Файлы скриптов назвать, например, tplink_reboot.sh и tplink_reconnect.sh, сохранить на сервере, дать права на выполнение и добавить в планировщик.

Уже пару раз выручило:
tplink_reconnect.zip
tplink_reboot.zip

Перезагрузка из Windows

Готовая сборка Wget + Bat скрипт для перезагрузки (только перегружает):
скачать tplink_reboot_wget.zip (подходит для большинства моделей Tplink, не только WR1042ND)

Перезагрузка из Android

(спасибо за этот код neolead)

Для андроид в данном изложении требуется root. Если нет рута.. то в конце checknet заменить на step1

Скетч Arduino для плат на базе микроконтроллера ESP32

(спасибо за этот код p-a-h-a)

One thought on “ Скрипт удалённой перезагрузки WI-FI роутера TP-LINK TL-WR1042ND ”

Спасибо, очень интересная статья и полезная.

Что именно изменилось, что-то не работает?

попробуй сменить время во всей квартире и в роутере. если будет по новому времени перезагружаться значит провайдер не виноват!

Большое спасибо!
Работает и в случае с TL-WR841N.

спасибо. полезная инфа.

дак под виндоус то как запускать?
ну скачал, ну установил wget а дальше то что? что куда вводить чтобы заработало?

anatoly, wget работает в режиме командой строки. Т.е. для использования можно или написать .bat файл, или создать ярлык с параметрами.

как проверть работоспособность вгет?

c:\Program Files (x86)\GnuWin32\bin>wget.bat

Так же не работает, вот лог из cmd, помогите пожалуйста

Не совсем понятно куда эти скрипты ставить? Брать VDS?

Можете запускать со своего компьютера или локального сервера.

Добавил в конце статьи архив, содержащий готовую сборку Wget + bat скрипт автоматической перезагрузки.

Я имел в виду скрипт для перезагрузки роутера

Спасибо! Полезная статья

Здравствуйте. Скачал, распаковал, в 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

А можно глянуть скрипт проверки и перезагрузки по крону.
Спасибо.

Ссылки на архив с готовыми скриптами находятся в конце статьи.

Возможно, Вы в диспетчере задач (планировщике) не указали папку в которой лежат исполняемые файлы.

Не проходит перезагрузка в роутере mr3020. Операционная система: windows 7. Параметры настроены верно, т.е. и ip и логин с паролем. Но вот перезагрузки почему-то не происходит :(

На mr3020 скрипт не тестировался. Скорее всего, там совершенно другая админка с другими адресами ссылок на перезагрузку.

Просто роутер будет стоять у людей, скажем так, несколько далёких от техники :) Поэтому и ищу решение для перезагрузки скриптом.

Пока что откопал только Bash скрипт для линукса (ubuntu/debian). Хотя когда-то делал и для обычного bat/cmd через telnet без vbs скриптов.

expect - "
send -s "reboot\r"
expect -exact "The system shell is being reset. Please wait. "
exit
EOF

Укажите в планировщике рабочую папку, в которой лежит скрипт.

Спасибо !
Но, к сожалению, 5 минут меня не устраивают. Специфика работы требует не более одной.

Поставьте в планировщике сколько угодно. Будет каждую минуту проверять. Хотя, проблем может добавить т.к. модем не успеет перегрузиться за минуту и поднять соединение, а скрипт его повторно уже в ребут отправит.

Попробовал в планировщике привязаться к событию BROWSER код 8033. Интересно, что при отключении питания роутера сразу проходит команда на перезагрузку, а при отключении кабеля интернета планировщик не реагирует, несмотря на то, что событие в журнале появляется.

Ваш вопрос выходит за рамки данной темы.

Согласен, тем более, что проблему решил.

Спасибо автору за статью, реально помогла )) перерыл кучу сайтов ниче не найти или не работает (( а тут все гуд ..

Дай Бог вам здоровья! :)
Спасибо

Жорик, для данной модели роутера не существует альтернативных прошивок.

Для TPlink Archer C20 скрипт не работает. Wget из под Win ((

tl-mr3420 работает. Спасибо

Спасибо большое за подсказку !
я сделал (на основе Вашего) 2 скриптика один для проверки сети (каждые 3 минуты) а вторым в час ночи перезагружаю принудительно так как у билайна надо переподключаться чтобы трафик с 1-8 часов не считался .
До этого перезагружал китайский таймер .
работает на ноуте с linux для перезагрузки TP-Link MR-3420v2(3.16.9 Build 150116 Rel.40997n) + ZTE MF823

Спросите у гика, как решить проблему с вашим компьютером с Windows, и он, скорее всего, спросит: «Вы пытались перезагрузить его?». Это похоже на легкомысленный ответ, но перезагрузка компьютера может решить многие проблемы.

Как бы то ни было, у вас могут быть свои собственные причины для перезагрузки компьютера, в этой статье мы покажем вам, как перезагрузить его с помощью Python.

Требования

В противном случае вы получите следующую ошибку в вашем скрипте:

Чтобы установить pywin32 на ваши окна, перейдите в репозиторий сборки в Source Forge здесь. Выберите последнюю сборку в списке (до даты этой статьи 220), тогда будет показан список раздач: x86 или x64

Pywin32 исходные кузнечные дистрибутивы

Установите дистрибутив, который работает с вашей версией python и платформы Windows (x86 или x64).

Перезапуск

Возможно, вы нашли некоторые решения, использующие модуль os и выполняющие модуль системной оболочки, известную команду shutdown:

Однако для некоторых пользователей Windows это решение не работает правильно.

Чтобы предотвратить любую несовместимость, мы будем работать напрямую с win32api, что позволит нам достичь нашей цели.

Как указано в требованиях, на вашем компьютере должен быть установлен pywin32, чтобы избежать ошибок при выполнении.

Теперь следующий код предоставляет все, что вам нужно, чтобы иметь возможность перезагрузить компьютер (и прервать его, если вам нужно), используя python:

2 основные функции будут RebootServer а также AbortReboot , AdjustPrivilege предоставит необходимые разрешения для перезагрузки системы. Обратите внимание, что RebootServer функция имеет время ожидания 30 секунд (компьютер будет перезагружен через 30 секунд), при необходимости измените его.

Чтобы перезагрузить компьютер (или сетевые компьютеры), используйте функцию RebootServer:

Перезагрузка диалоговых окон

Вы можете протестировать на более динамичном примере, выполнив следующий код:

  1. Перезапустите его через 30 секунд.
  2. Подождите 10 секунд.
  3. Прервите перезагрузку через 10 секунд.

Поскольку код говорит сам за себя, теперь продолжайте работать в своем проекте, получайте удовольствие!

Настройка оборудования

Способ 1. Перезагрузка с помощью кнопки включения или блока питания.

На задней части многих ADSL-модемов и WiFi-роутеров есть небольшая выпуклая кнопка Power или On/Off. Она может выглядеть так:

а может вот так:

как перезагрузить вай-фай роутер ростелеком

Выдергиваем его из розетки на 30-40 секунд и возвращаем обратно. Этот способ очень простой, но у него есть один существенный минус. Заключается он в том, что на некоторых устройствах после настройки надо принудительно сохранять конфигурацию. Если это не сделать и перегрузить железку по питанию, то после этого она не подключиться к Интернету и придется заново её на страивать.

Способ 2. Перезапуск устройства через веб-интерфейс (в т.ч. удаленно)

как перезагрузить роутер asus через компьютер

На D-Link сделано отдельно меню:

как перезагрузить роутер d-link дистанционно

как перезагрузить роутер netgear дистанционно

как перезагрузить роутер tp-link дистанционно

Способ 3. Перезагружаем маршрутизатор через telnet.

как перезагрузить роутер через командную строку дистанционно

Пройдя авторизацию, просто набираем команду Reboot. В некоторых моделях надо вводить Restart либо Reload.
После этого роутер перезагрузится.

Читайте также: