The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Раздел полезных советов: Создание реконнект-скрипта для DSL-..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Создание реконнект-скрипта для DSL-..."  +/
Сообщение от auto_tips on 28-Апр-11, 07:05 
Принудительный реконнект может потребоваться для получения нового IP-адреса при пользовании, к примеру, таких сервисов, как rapidshare.

Для браузера Firefox существует дополнение "[[https://addons.mozilla.org/en-US/firefox/addon/tamper-data/ 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

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

URL:
Обсуждается: http://www.opennet.dev/tips/info/2569.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от mma on 28-Апр-11, 07:05 
обычно на модемах естьт telnet, его проще использовать из скриптов.
Но описанный подход как минимум оригинален
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от Карбофос (ok) on 28-Апр-11, 10:59 
да, это так. просто хотел максимально упростить процесс, т.к. через telnet приходится проходить порой пару-тройку промежуточных пунктов интерфейса, что усложняет написание скрипта.
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

2. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от vi_m (ok) on 28-Апр-11, 09:29 
Опишите, пожалуйста, что-то подобное через telnet, интересно посмотреть. Зачастую там достаточно скудный набор функций, и я не нашел сходу способа.
Подход действительно интересный, сколько маны не читай, всегда от коллег услышишь что-то новое)
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от Карбофос (ok) on 28-Апр-11, 11:16 
там просто нужно работать с пайпами, пробираясь от одного пункта меню к другому. в принципе, это вызывает много вопросов у новичков и является дополнительной причиной ошибок. где-то в сети видел подобный скрипт, могу попытаться найти.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

5. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от Andrey Mitrofanov on 28-Апр-11, 11:29 
> найти.

google: dsl telnet script

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

7. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от reader (ok) on 28-Апр-11, 20:23 
#!/usr/bin/expect -f
  ######################################################################################
  #$remote_server - сервер, к которому осуществляется доступ                           #
  #$my_user_id    - имя пользователя на сервере                                        #
  #$my_password   - пароль пользователя на сервере                                     #
  #$my_command    - команда, которая будет запущена на сервере                         #
  #                                                                                    #
  ######################################################################################
set remote_server1 192.168.1.1
set my_user_id root
set my_password password
set my_command1 "ifconfig"
set my_command2 "PPP=`cat /var/run/ppp0.pid` && kill HUP \$PPP"
set my_command3 ""
  #
  # Открываем telnet сессию на удаленном сервере, и ждем запроса имени пользователя.
  spawn telnet $remote_server1
  expect "login:"
  # Посылаем имя пользователя и ждем запроса пароля.
  send "$my_user_id\r"
  expect "Password:"
  # Посылаем пароль и ждем приглашения ввода командного интерпретатора.
  send "$my_password\r"
  expect "%"
  # Посылаем команду, и ждем следующего приглашения ввода командного интерпретатора.
#  send "$my_command1\r"
#  expect "%"
  send "$my_command2\r"
  expect "%"
#  send "$my_command3\r"
#  expect "%"
  # Завершаем сессию telnet, и ждем символа конца строки (eof).
  send "exit\r"
  expect eof
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

8. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от anonymous (??) on 28-Апр-11, 22:40 
Спасибо, узнал про существование полезной утилиты. Так понимаю, написана на тикле(тянет по зависимостям при установке)? А реализовать подобное на чистом баше, без сторонних утилит - возможно? Чистое любопытство.
Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от anonymous (??) on 28-Апр-11, 22:50 
> Спасибо, узнал про существование полезной утилиты. Так понимаю, написана на тикле(тянет
> по зависимостям при установке)? А реализовать подобное на чистом баше, без
> сторонних утилит - возможно? Чистое любопытство.

Отвечаю сам себе:
(
echo open 192.168.1.1
sleep 2
echo "admin"
sleep 1
echo "admin"
sleep 1
echo "ppp config  0.8.35 1 down"
sleep 8
echo "ppp config  0.8.35 1 up"
sleep 8
echo "logout"
sleep 1
) | telnet

Нашел в интернете как раз по dsl script telnet. Интересно, работает? Возможности проверить сейчас нет.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от Карбофос (ok) on 28-Апр-11, 23:37 
Не всегда, например скрипт для одной из железок Zyxel, в стародавние времена была такая у меня :)

#!/bin/sh
host=192.168.1.1
port=23
login="admin"
passwd="examplepassword"

(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

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от Andrey Mitrofanov on 29-Апр-11, 00:00 
>Интересно, работает? Возможности проверить сейчас нет.

Иногда - работает. Скорее всего так.

Исходя из того, что echo+sleep _совсем_ не одно и то же, что send+expect. То есть работает-работает, а потом "вдруг" 2 секунд не хватило (или 10, или сколько там) - и... не узнаешь никогда... вот.

Ну, хоть не пуск ракет~~~

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

13. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от Vlad (??) on 15-Май-11, 23:51 

#!/usr/bin/perl
use Net::Telnet;
my @array = ();
$telnet = new Net::Telnet ( Timeout=>50,
Errmode=>'die',
Prompt => '/[\$%#E<gt>] $/');
$telnet->open('???_IP');
$telnet->login('admin', '???_??????');
@array = $telnet->cmd(String =>'ping -c 10 4.2.2.4');
my $nonet = index($array[$#array-1], "100% packet loss", 1);
if ( ( $#array != 14 ) || ( $nonet > 0 ) )
  {
    print "rebooting modem \n";
    $telnet->cmd('reboot');
    $telnet->close;
  }
$telnet->close;
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

14. "Создание реконнект-скрипта для DSL-модема "  +/
Сообщение от Vlad (??) on 15-Май-11, 23:52 
#!/usr/bin/perl
use Net::Telnet;
my @array = ();
$telnet = new Net::Telnet ( Timeout=>50,
Errmode=>'die',
Prompt => '/[\$%#E<gt>] $/');
$telnet->open('MODEM_IP');
$telnet->login('admin', 'MY_PASSWORD');
@array = $telnet->cmd(String =>'ping -c 10 4.2.2.4');
my $nonet = index($array[$#array-1], "100% packet loss", 1);
if ( ( $#array != 14 ) || ( $nonet > 0 ) )
  {
    print "rebooting modem \n";
    $telnet->cmd('reboot');
    $telnet->close;
  }
$telnet->close;

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

12. "D-link ADSL DSL-2500U/BRU/D"  +/
Сообщение от vasilisc email on 02-Май-11, 18:21 
У моего D-link ADSL DSL-2500U/BRU/D не было телнет и я рестартил через вебморду скриптом.
http://vasilisc.com/scripts_linux#restart_modem
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

15. "D-link ADSL DSL-2500U/BRU/D"  +/
Сообщение от Карбофос (ok) on 19-Авг-12, 22:35 
ну первый способ и был написан для веб-морд
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру