[an error occurred while processing this directive]

Создание реконнект-скрипта для DSL-модема
Принудительный реконнект может потребоваться для получения нового IP-адреса при
пользовании, к примеру, таких сервисов, как rapidshare.

Для браузера Firefox существует дополнение "Tamper Data", с помощью которого
можно отлавливать и разбирать по полочкам запросы GET/POST. Так вот, основа
того, что можно реконнектить модем через веб-интерфейс настроек модема, как раз
и лежит в этом способе. Всего (обычно) действий четыре: логин с паролем, разрыв
соединения и через некоторое время (5-10 секунд) - восстановление соединения с
внешним миром и выход из настроек.

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

Если мы уже находимся в веб-интерфейсе настроек модема, то нужно найти кнопки
"Disconnect" и "Connect". После этого включаем "Tamper Data" через панель
расширений и созерцаем соединения GET/POST в нашем окне. Жмём "Disconnect" в
веб-интерфейсе модема и смотрим, что происходит в нижнем левом окне:

   POSTDATA=controller=Internet&action=DisconnectInternet&id=0&ReturnPage=%2Fdiagnostic.htm

В верхнем окне, в строке "POST" видим 

   http://192.168.1.1/cgi-bin/Hn_wan.cgi

Таким же образом определяем восстановление соединения с внешним миром:

   POSTDATA=controller=Internet&action=ConnectInternet&id=0&ReturnPage=%2Fdiagnostic.htm

для 

   http://192.168.1.1/cgi-bin/Hn_wan.cgi

Затем пишем простой shell-скрипт:

    #!/bin/sh
    # by Karbofos

    echo "disconnect"
    wget -q -O /dev/null --post-data="controller=Internet&action=DisconnectInternet&id=0&ReturnPage=%2Fdiagnostic.htm" http://192.168.1.1/cgi-bin/Hn_wan.cgi >/dev/null 2>&1
    sleep 5
    echo "connect"
    wget -q -O /dev/null --post-data="controller=Internet&action=ConnectInternet&id=0&ReturnPage=%2Fdiagnostic.htm" http://192.168.1.1/cgi-bin/Hn_wan.cgi >/dev/null 2>&1

Как видно, текст из буфера обмена нужно немного переработать, выкинув текст
"POSTDATA=" и обращаться нужно не просто по IP адресу модема, а вызывать нужное
cgi приложение, в нашем случае Hn_wan.cgi

Пауза в 5 секунд необходима для получения нового IP адреса, величина зависит от
провайдера, устанавливается экспериментальным путём. Если пауза будет меньше,
то есть вероятность того, что вы получите предыдущий IP.

Конечно, если у вас доступ к настройкам возможен через ввод пароля, то и скрипт
нужно расширить, добавив к wget опции "--http-user=логин
--http-password=пароль". Если машина не однопользовательская, параметры
аутентификации можно поместив их в файл ~/.wgetrc, указав http_user=логин и http_password=пароль.

Или же логин можно "отловить" через веб-интерфейс и расширить скрипт,
основываясь на данных (для вышеприведенного примера):

   POSTDATA=controller=Overview&action=Login&id=0&idTextPassword=YourPassword

для приложения http://192.168.1.1/cgi-bin/Hn_login.cgi


Часть 2. Написание реконнект-скрипта для DSL модема с использованием telnet

Собственно, была небольшая проблема реконнекта модема от Zyxel с целью
получения нового IP-адреса. Этот скрипт я использовал еще до того, как нашёл
возможность проделывать сию процедуру через веб-интерфейс.

При входе на модем через telnet, необходимо пройдись по пунктим меню:


   telnet 192.168.1.1
   superadmin,yourpassword
   24
   8
   poe drop poe0
   dev dial 1
   99

Зная эту последовательность команд, пишем скриптик для реконнекта:

   #!/bin/sh
   host=192.168.1.1
   port=23
   login="superadmin"
   passwd="yourpassword"

   (echo open ${host} ${port}
   sleep 1
   echo ${login}
   sleep 1
   echo ${passwd}
   sleep 1
   echo "24"
   sleep 1
   echo "8"
   sleep 1
   echo "poe drop poe0"
   sleep 1
   echo "dev dial 1"
   sleep 1
   echo exit) | telnet


Или циклом:

   #!/bin/bash
   host=127.0.0.1
   port=23
   arr=( "superadmin" "yourpassword" "24" "8" "poe drop poe0" "dev dial 1" "99" )

   (echo open ${host} ${port}
    sleep 1
    for j in "${arr[@]}"
    do
      echo $j
      sleep 1
    done
   echo exit) | telnet


Задержки в секунду (sleep 1) вводились сугубо из-за опасения за медленную реакцию модема.
 
27.04.2011 , Автор: Карбофос , Источник: http://eduard-x.blogspot.com/2011/0...
Ключи: modem, shell, wget
Раздел:    Корень / Пользователю / Работа с Web и Ftp

[an error occurred while processing this directive]

[an error occurred while processing this directive]