LINUX.ORG.RU

Перезагрузка роутера через wget. Два действия в одном запросе??

 , , , ,


0

1
wget --load-cookies=wget_eltex --keep-session-cookies -U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" http://192.168.0.1/rebootinfo.cgi?sessisonKey=`ps ef | wget --load-cookies=wget_eltex --keep-session-cookies -U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" "http://192.168.0.1/resetrouter.html" -q -O - | grep [0-9] | awk -F"=" '{print $3}' | awk -F"'" '{print $1}'`

Выше это код до которого я дошел(авторизацию я оставил за сценой). Но вся суть ступора состоит в том что sessisonKey меняется при каждом новом запросе, что и не дает выполнить перезагрузку через wget потому как при обращении на rebootinfo.cgi?sessisonKey сам sessisonKey уже изменяется.

Вот так выглядит код самой страницы куда шлется последний первый запрос.

<html>
<head>
   <meta HTTP-EQUIV='Pragma' CONTENT='no-cache'>
   <link rel="stylesheet" href='stylemain.css' type='text/css'>
   <link rel="stylesheet" href='colors.css' type='text/css'>

   <script language="javascript">
function btnReset() {
   location = 'rebootinfo.cgi?sessionKey=1895756659';
}
   </script>
</head>

<body>
   <blockquote>
         Click the button below to reboot the router.
   <br><br>
      <input type='button' onClick='btnReset()' value='Reboot'>
   </blockquote>
</body>
</html>

В идеале запускать просто скрипт при обращении к странице, но как это и можно ли командой я не уверен.

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

В идеале суть задачи, запихать все в bash файл и использовать для перезагрузки роутера без лишних манипуляций.

У кого есть варианты как выполнить запрос с тем же sessisonKey?

П.Н. Telnet есть, но при каждой перезагрузке через telnet настройки на доступ по telnet слетают, восстанавливать их ручками не вариант=бессмысленно, иначе тупо уже не нужен telnet.



Последнее исправление: nixbeast (всего исправлений: 2)
Ответ на: комментарий от NiTr0

Если Вы способны прочитать только одно сообщение за раз, то специально для Вас повторю код из первого сообщения

wget --load-cookies=wget_eltex --keep-session-cookies -U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" http://192.168.0.1/rebootinfo.cgi?sessisonKey=`ps ef | wget --load-cookies=wget_eltex --keep-session-cookies -U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" "http://192.168.0.1/resetrouter.html" -q -O - | grep [0-9] | awk -F"=" '{print $3}' | awk -F"'" '{print $1}'`
И объясняю почему оно не работает через wget, и чем отличается от клика в браузере.

Тут(с wget) ты два раза, в два разных запроса, обращаешься к одной и тоже странице на которой при каждом новом запросе генерируется ДРУГОЙ ключ проверки формы. Соответственно второй запрос, обращается с ключем полученным из первого запроса, уже передает устаревшие данные, а про http можете себе на ночь рассказывать.

Вам черным по белому объясняют что, форма актуально только в одном запросе на ее генерацию - ключ выводится в js скрипт инлайном в текущем документе html.

При клике в браузере, ты отправляешь запрос - форму без обновления из текущего документа, и все скрипты отрабатывают на раз.

Суть задачи, в один запрос wget не может и получить документ и отправить запрос с актуальными для него данными .так как каждый запрос wget = новому обращению к роутеру на что тот отвечает генерацией новой страницы, в которой динамичен только инлайн js в котором каждый раз появляется новый ключ.

nixbeast
() автор топика
Ответ на: комментарий от nixbeast

При клике в браузере, ты отправляешь запрос - форму без обновления из текущего документа, и все скрипты отрабатывают на раз.

Чушь какая. Браузер точно так же делает новый запрос.

Суть задачи, в один запрос wget не может и получить документ и отправить запрос с

Суть задачи - надо сделать 3 wget: http://192.168.0.1/resetrouter.html , http://192.168.0.1/rebootinfo.cgi и http://192.168.0.1/rebootinfo.cgi?sessionKey=распарсенный в прошлый раз.

vodz ★★★★★
()
Ответ на: комментарий от nixbeast

Если Вы способны прочитать только одно сообщение за раз, то специально для Вас повторю код из первого сообщения

--save-cookies где? ну т.е. куда ваши куки должны сохраняться?

Тут(с wget) ты два раза, в два разных запроса, обращаешься к одной и тоже странице на которой при каждом новом запросе генерируется ДРУГОЙ ключ проверки формы. Соответственно второй запрос, обращается с ключем полученным из первого запроса, уже передает устаревшие данные, а про http можете себе на ночь рассказывать.

открою страшный секрет: браузер по клику на кнопку/лин тоже отправляет второй запрос. который не менее «разный», чем второй запрос вгета.

Вам черным по белому объясняют что, форма актуально только в одном запросе на ее генерацию - ключ выводится в js скрипт инлайном в текущем документе html.

При клике в браузере, ты отправляешь запрос - форму без обновления из текущего документа, и все скрипты отрабатывают на раз.

и чо? ворой запрос-то при этом что, отсутствует? если нет - то в чем проблема сформировать его точно с теми же заголовками что и в браузере?

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

Отвечу коротко. Вы меня не понимаете, и не хотите этого делать, даже код прочитать ровно не прилагаете никаких попыток.

Дальше пытаться продолжать с Вами вести какие-либо дискуссии не вижу смысла, для нас обоих.

Всего наилучшего!

П.Н. Если есть желание осознать в чем у нас непонимание, перечитайте сам вопрос, найдите такой же роутер(NTE-RG-1402G-W:rev.B) и «поиграйте» с ним.

«Видишь там, на горе, возвышается крест.»

nixbeast
() автор топика
Ответ на: комментарий от nixbeast

в том-то и дело - я прекрасно понимаю, как работает хттп. в отличие от вас. и никакой магии от «яваскрипта, запущенного в документе», нет и быть не может - на роутер приходят два GET-запроса, и ни о каком «новом документе» он знать не знает, все то он получает - GET-заголовки.

то что вы не осилили сформировать запрос, или просто херите сессию/куки т.к. забыли --save-cookies указать - то ССЗБ.

NiTr0 ★★★★★
()
Ответ на: комментарий от NiTr0

Теперь мне уже интересно ...

Ответьте мне на ряд простых вопроса.

1) Как по Вашему я без --save-cookies, выполняю --load-cookies, и получаю данные со страницы для которой нужна авторизация?

2) Вы видели в вопросе эти буквы??

Выше это код до которого я дошел(авторизацию я оставил за сценой).

wget --keep-session-cookies --save-cookies wget_eltex --post-data 'username=key&password=value' -U "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5" http://192.168.0.1/login

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

Позже, возможно, для саморазвития таки попробую как советовал товарищ boowai

nixbeast
() автор топика
Ответ на: Теперь мне уже интересно ... от nixbeast

Вопрос судя по всему реально в потоках, сессиях, куки тут не причем вообще

какие потоки, сессии?... session ID - хранится в куках. никакими «потоками» тут и не пахнет - вебсокетов там нет.

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

какое «повторное открытие»? открываете снова страничку с кнопкой и новосгенеренным ключом? так само собой старый ключ заменится новым.

смотрите, что в заголовках шлется в одом и втором случаях и думайте где отличие.

NiTr0 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.