Удаленная перезагрузка D-LINK DIR-825/I1 с прошивкой 1.0.3.

dtvims
Site Admin
Сообщения: 141
Зарегистрирован: Пн авг 02, 2010 2:43 pm

Удаленная перезагрузка D-LINK DIR-825/I1 с прошивкой 1.0.3.

Сообщение dtvims » Чт сен 21, 2023 2:27 pm

Появилась идея автоматически определять пропажу интернета и перезагружать роутер. Самая простая идея зайти по ssh/telnet и дать команду reboot, но по какой-то сверх важной причине эта команда в прошивке отсутствует.
Начал искать решения и нашел по роутерам ASUS скрипты как дернуть скрипт reboot по http запросу, типа обычный вэб-клиент. А что делать с D-LINK? Надо изучать...
Думаю, что мол ssh есть, ща зайдем, посмотрим, разберемся... Но там чет так "Хорошо" сделано, видимо чтобы поддерживать ПО было легче, что ничего с ходу не понять. Вероятно, конечно, с этим что-то можно сделать, но проще разве что поставить новую прошивку на него типа Open-wrt и не париться. В общем, ну его!
Открыл браузер, открыл отладку, посмотрел какие пакеты браузер отправляет и набросал скриптик ssh вот такой:

Код: Выделить всё

#sh
TOKEN=$(curl -c /home/pi/cookiefile -X POST http://192.168.0.1/login -H 'Content-Type: application/json' -d '{"login":"admin","password":"myverycomplexpassword","staysigned":true}' | grep -o '"AccessToken": "[^"]*' | grep -o '[^"]*$')
echo -e '192.168.0.1\tFALSE\t/\tFALSE\t0\tDMSD-Access-Token\t'$TOKEN >> /home/pi/cookiefile
curl -b /home/pi/cookiefile -X POST http://192.168.0.1/system_reboot -H 'Content-Type: application/json' -d '{}'

Там все общение с роутером сводится к отправке JSON сообщений. Первое сообщение с помощью curl осуществляет авторизацию пользователя, сессия сохраняется в cookie файл, и второй запрос запускает механизм перезапуска.
Собственно сохраняем это в файл в reboot_router.sh (можно назвать как угодно), разрешаем ему выполнение, запускаем и наблюдаем как роутер ушел в reboot.
Скрипт для linux систем, но можно найти способ и для др. систем по тому же принципу.

З.ы. Я спрашивал на 4pda об этом, но пока ждал ответа, сам сделал данный скрипт и сам себе там же ответил. Потом успешно забыл как я это делал, хотел повторить, но у меня все пропало. Тут наткнулся на свой пост и думаю, что надо сохранить это себе поближе...
З.з.ы. Тест интернета просто пингом внешнего ресурса с этим роутером не катит, т.к. он отвечает страничкой ошибок вместо внешнего сервера, а потому создается впечатление, что интернет есть, т.е. проверка не может быть примитивной, а что-то умное у меня так и не заработало, т.к. это надо на месте тестировать, отключая интернет, а я все делал удаленно и, если бы я его отключил, то как бы я его включили обратно без него? В обще задача осталась не доделана...

dtvims
Site Admin
Сообщения: 141
Зарегистрирован: Пн авг 02, 2010 2:43 pm

Re: Удаленная перезагрузка D-LINK DIR-825/I1 с прошивкой 1.0.3.

Сообщение dtvims » Ср дек 11, 2024 5:02 pm

Надо было удаленно перезагрузить этот же роутер, но под рукой была esp8266 с возможностью перепрошивки по воздуху (OTA).
Быстро в прошивку добавил код... Ну как быстро... Пришлось немного подумать, но в целом.
По сути все тоже самое, но не совсем:

Код: Выделить всё

  #include <ArduinoJson.h>
...
  JsonDocument doc, doc2;
  HTTPClient http;
  http.begin(wclient,"http://192.168.0.1/login");
  http.addHeader("Content-Type", "application/json");
  int httpCode = http.POST("{\"login\":\"admin\",\"password\":\"myverycomplexpassword\",\"staysigned\":true}");
  deserializeJson(doc, http.getString().c_str());
  String ress = doc["result"];
  deserializeJson(doc2, ress);
  String Tocken = doc2["AccessToken"];
  http.end();
  http.begin(wclient,"http://192.168.0.1/system_reboot");
  http.addHeader("Content-Type", "application/json");
  http.addHeader("Cookie", "DMSD-Access-Token=" + Tocken);
  httpCode = http.POST("{}");
  bot.sendMessage("Response " + String(httpCode) + " " + http.getString(), actUser.srcId);
  bot.editMessage(actUser.menuId, "Router", actUser.srcId);
  http.end();


Код в лоб, но свое дело сделал, а это самое главное.


Вернуться в «Администрирование»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя