Pull to refresh

Comments 20

TP-Link TL-WR841N, у которого, к сожалению, нет интерфейса управления через командную строку (telnet, SSH).

Это не совсем так, ведь есть OpenWRT, а там полноценный ssh
Да, стоило упомянуть, что речь идет о штатной прошивке. OpenWRT решает проблему с командной строкой. Но не на все устройства есть OpenWRT. В данном случае речь идет об общем подходе к управлению через WEB.
В последних версиях устройств (v12 или v13), на заводской прошивке, есть какой-то отклик на SSH порту. Был весьма удивлён этим событием, однако, устройство было у меня не долго (просили просто настроить WiFI). Было-бы интересно узнать, появился там SSH нормальный или нет.
Там версия прошивки соответствует версии железа.


Последняя версия на оф сайте действительно V13, но у меня на руках только железо V10. Отклик по SSH на нем есть, но при попытке ввода пароля


Официально ни одна из версий SSH не поддерживает.
Так было бы проще, но не интересно
Вы правы относительно наличия OpenWRT, но, на самом деле, TP-Link — это лишь частный пример. Быть может, у вашего холодильника, чайника или пылесоса есть WEB-интерфейс, а значит им можно попробовать управлять с помощью Python requests и автоматизировать, автоматизировать и еще раз автоматизировать…
Да, он живет на одноплатной машине Odroid C2 с ОС Ubuntu и включен в LAN маршрутизатора, а управляю я им с помощью телеграма.
Кстати, приведенные в статье Python запросы будут работать и через интернет в случае наличия открытого доступа к маршрутизатору по белому IP. С точки зрения HTTP запросов неважно работать через WAN или через LAN.
ну это тогда ничем не лучше открытого доступа к роутеру. телеграмм тем и лучше, что может работать в режиме поллинга и не светиться наружу
Конечно, когда бот находится строго во внутренней сети, управляет маршутизатором из внутренней сети и ничем не светит наружу — это значительно безопаснее.

Про возможность работы Python requests через интернет — это я на всякий случай)
Спасибо, возьму на вооружение. Пользуюсь автоматической перезагрузкой роутера еженощно в 1:05 — чтобы срабатывал хайвей на билайне, только bash скриптами, с отчетами в телеграмм. Вопрос на вскидку а если вместо 'Cookie': auth_token} использовать обертку with requests.Session() as s: s.get(url) — тут же идет сохранение сессии или я ошибаюсь?
А что вы подразумеваете под «сохранением сессии»?
Как-то сложновато использовать wireshark, просто чтобы посмотреть запросы браузера. Можно было в самом браузере открыть devtools и скопировать нужные данные.
Наверное, я слишком привязан к Wireshark еще со времен Ethereal…
Да, конечно, вы правы. Devtools браузера проще. Спасибо!
Не в данном случае, но в других — приходится пользоватся сниферами т.к. хромниумы не видят(иногда) form data в POST запросах и даже мозилла, не всегда показывает, на сколько я понял это из-за джава скриптов, которые все это делают на страничке за тебя (в смысле отправляют запрос).
За хромиумы не скажу, а в мозилле я с таким не сталкивался. Буду теперь иметь ввиду, вдруг наткнусь на такой баг.

Занятная статья.
Я сам делал очень похожее несколько лет назад. Устройством, правда, был не роутер, а две Nanostation Loco M5, собранные в мост. Мне нужно было выводить уровень сигнала и скорость линка в дашборд, и я сделал примерно так же — питоноскрипты, ползающие по вебу.


Пара замечаний(было больше, но про девтулс уже написали 8):


  1. Код. Он ужасен. Функции, возвращающие либо строку с ошибкой, либо id, break после return и прочее. Однако, добавлю конструктива — если вам не пофиг, то по качеству кода я могу накидать замечаний в гитхаб или какой-то другой сервис, если код вы выложите туда.
  2. Вы ошибаетесь, считая, что не храните пароль в открытом виде. То есть, сам-то пароль, конечно, да. Но у вас в открытом виде лежит строка, которая позволяет авторизоваться на веб-интерфейсе роутера. Это не то, чтобы плохо — вам в любом случае пришлось бы либо хранить что-то, либо требовать ввода от пользователя, я лишь хочу указать на ошибку в тексте.
Sign up to leave a comment.

Articles