Wget опубликовать форму для перезагрузки маршрутизатора
Я хочу перезапустить мой Fritz!Box 7390 с помощью wget. Веб-интерфейс получил форму перезагрузки, которая выглядит следующим образом:
<form action="/system/reboot.lua" method="POST">
<div id="btn_form_foot">
<input type="hidden" name="sid" value="beb5683181c2ab9f">
<button type="submit" name="reboot">Neu starten</button>
</div>
</form>
Я хочу отправить эту форму. До сих пор я пробовал это так, но это не похоже на работу:
wget --post-data "sid=beb5683181c2ab9f" "http://fritz.box/system/reboot.lua"
Кажется, sid меняется каждый раз, когда я загружаю страницу.
Но я не уверен, что это проблема, потому что я могу исправить sid, добавив? Sid = пример к URL
1 ответ
Вы не можете просто отправить этот URL в одиночку. Сначала вам нужно получить действительный идентификатор сессии. Это можно сделать, выполнив запрос GET на http://fritz.box/checklogin.lua
и схватил его из LOCATION
значение заголовка Затем вы можете использовать это, чтобы отправить в http://fritz.box/system/reboot.lua
включая идентификатор сессии.
Вот минимальные шаги для его автоматизации:
SID=$(curl -s -I "http://fritz.box/logincheck.lua" | grep -Fi Location | awk -F'[=]' '{print $2}')
SID=$(curl -s -i -H "Content-Type: application/x-www-form-urlencoded" -H "Origin: http://fritz.box" -H "Referer: http://fritz.box/system/reboot.lua\?sid\=$SID" --data "reboot=&sid=$SID" -L http://fritz.box/system/reboot.lua | grep -Fi Location | awk -F'[=]' '{print $2}')
curl -s http://fritz.box/reboot.lua?ajax=1&sid=$REBOOT_SID
Я создал небольшой скрипт с некоторыми дополнительными проверками, которые вы можете найти здесь. Вы можете найти полный скрипт, включая проверку здесь: http://git.io/v3zQs
Предложения, каковы шаги для текущего программного обеспечения (v7.20+)?
Предпочтительно для маршрутизатора, защищенного паролем.
Я попытался обновить его, чтобы использовать недавний путь, используя информацию инструментов разработчика Chrome.
Он дает код состояния
200
и ответ:
{"reboot_state":"extern"}
.
Но без перезагрузки.
Инструменты разработчика Chrome говорят URL-адрес при нажатии
Restart
кнопка в пользовательском интерфейсе:
curl 'http://fritz.box/reboot.lua' \
-H 'Connection: keep-alive' \
-H 'Pragma: no-cache' \
-H 'Cache-Control: no-cache' \
-H 'User-Agent: Mozilla/5.0 (...) Chrome/86.0.4240.111 Safari/537.36' \
-H 'DNT: 1' \
-H 'Content-Type: application/x-www-form-urlencoded' \
-H 'Accept: */*' \
-H 'Origin: http://fritz.box' \
-H 'Referer: http://fritz.box/' \
-H 'Accept-Language: en,en-US;q=0.9,nl;q=0.8,de;q=0.7,la;q=0.6' \
--data-raw 'ajax=1&sid=1fd4370b50b14b07&no_sidrenew=1&xhr=1&useajax=1' \
--compressed \
--insecure
(sid
очевидно меняется после каждого входа в систему)