faq обучение настройка
Текущее время: Пт июл 18, 2025 15:23

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: Пт ноя 19, 2004 09:41 
Не в сети

Зарегистрирован: Пт ноя 19, 2004 09:35
Сообщений: 3
Откуда: Moscow
ВОПРОС!
МТУ теперь взяло за правило отваливать канал и днем и ночью (т.е. коннект есть, пингов никаких нет). Это происходит с завидной регулярность (днем - в районе 13-14, ночью - с полуночи до 4). Не помогает ПРЕДВАРИТЕЛЬНЫЙ рестарт модема. А помогает - только ПОСЛЕ зависания канала (сразу возобновляется коннект, правда выдается другой IP, но так и должно быть, как я понимаю). Поскольку у меня модем LAN (D-LINK DSL-500T), то рестарт можно произвести только через браузер (встроенным софтом после авторизации), либо выкл./вкл. питания.

Вот сам и ВОПРОС:
Можно-ли как-то автоматизировать процесс перезагрузки LAN-модема (т.е. в мое отсутствие)???


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 00:09 
Не в сети

Зарегистрирован: Вт ноя 16, 2004 02:27
Сообщений: 15
Откуда: Moscow
можно. самое простое: кидать на 192.168.1.1:80 заранее сформированный HTTP пакет со статично зашитой командой рестарта. я такой принцип использую для дисконнекта и коннекта. вывел ярлыки к скрипту на раб.стол и жмакаю, когда нужно 8)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 00:25 
Не в сети

Зарегистрирован: Вт июл 27, 2004 19:13
Сообщений: 83
Откуда: Москва
:roll: Если не жалко напиши в подробностях

_________________
работал с DSL-500T, DSL-G604T, DI-704UP, DSL-G804V, DI-824VUP.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 00:51 
Не в сети

Зарегистрирован: Вт ноя 16, 2004 02:27
Сообщений: 15
Откуда: Moscow
да нет, не жалко. при нажатии кнопки рестарта на веб-интерфейсе модема броузер отправляет определенный HTTP-пакет на 192.168.1.1:80 (ну или на какой-нибудь другой адрес). задача просто претвориться этим самым броузером и сгенерировать правильный пакет. к примеру, следующее 2 пакета (один для авторизации, другой - команда) нужно отправить модему в одном коннекте, чтобы тот установил соединение с провайдером.
===============================
POST /cgi-bin/webcm HTTP/1.1
Accept: image/gif, image/x-xbitmap, */*"
Referer: http://192.168.1.1/cgi-bin/webcm
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Own
Host: 192.168.1.1
Content-Length: xxx
Connection: Keep-Alive
Cache-Control: no-cache

getpage=..%2Fhtml%2Fframe.htm&errorpage=..%2Fhtml%2Findex.html&login%3Acommand%2Fusername=admin&login%3Acommand%2Fpassword=admin&var%3Aerrormsg=Error
===============================
POST /cgi-bin/webcm HTTP/1.1
Accept: image/gif, image/x-xbitmap, */*
Referer: http://192.168.1.1/cgi-bin/webcm
Accept-Language: ru
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Own
Host: 192.168.1.1
Content-Length: 82
Connection: Keep-Alive
Cache-Control: no-cache

getpage=..%2Fhtml%2Fstatus%2Fconnstatus.htm&connection0%3Asettings%2Fmanual_conn=1
===============================

совсем ничего хитрого, зато оч. удобно.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 01:41 
Не в сети

Зарегистрирован: Вт июл 27, 2004 19:13
Сообщений: 83
Откуда: Москва
Спасибо, но это мне мало помогло. Лучше расскажи куда все это писать, какой программой какую мышь тыкать. Вот тогда Респект тебе огромный!

_________________
работал с DSL-500T, DSL-G604T, DI-704UP, DSL-G804V, DI-824VUP.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 19:06 
Не в сети

Зарегистрирован: Сб окт 23, 2004 18:11
Сообщений: 128
Откуда: Moscow
Rouming писал(а):
да нет, не жалко. при нажатии кнопки рестарта на веб-интерфейсе модема броузер отправляет определенный HTTP-пакет на 192.168.1.1:80 (ну или на какой-нибудь другой адрес). задача просто претвориться этим самым броузером и сгенерировать правильный пакет.

И как ты "браузером притворяешься"?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 19:27 
Не в сети

Зарегистрирован: Вт ноя 16, 2004 02:27
Сообщений: 15
Откуда: Moscow
беру и притворяюсь. )
может кому Java-исходник дать для исключения дальнейшей полемики?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 19:55 
Не в сети

Зарегистрирован: Сб окт 23, 2004 18:11
Сообщений: 128
Откуда: Moscow
Rouming писал(а):
беру и притворяюсь. )
может кому Java-исходник дать для исключения дальнейшей полемики?

Сюда можешь кинуть?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 20:16 
Не в сети

Зарегистрирован: Вт ноя 16, 2004 02:27
Сообщений: 15
Откуда: Moscow
только 2 команды: connect, disconnect. точно таким же образом можно добавить restart, предварительно посмотрев на какой HTTP-пакет модем согласится рестартиться. отключив GUI, можно прикрутить вызов этого безобразия к cron'у и дергать автоматом. успехов )

Код:
import javax.swing.*;
import java.net.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.regex.*;

public class DLinkConnection

  public static void main ( String args[] )
  {
  try{

    final int BUFSZ = 1000;
    byte buf[] = new byte[BUFSZ];

    if ( args.length != 2 ) 
      error( "Usage: login:pass@host:port connect|disconnect" );

    String connect = "0";

    if ( !args[1].equals("connect") &&
         !args[1].equals("disconnect") )
      error( "connect|disconnect" );
    else if ( args[1].equals("connect") )
      connect = "1";   
 
    String conf[] = args[0].split("@");
    if ( conf.length != 2 )
      error( "auth@conn" );

    String auth[] = conf[0].split(":");
    if ( auth.length != 2 )
      error( "login:path" );

    String conn[] = conf[1].split(":");
    if ( conn.length != 2 )
      error( "host:ip" );

    int port = Integer.parseInt(conn[1]);
    String host = conn[0];

    String len = new Integer( 139 + auth[0].length() + auth[1].length() ).toString();
     
    String authPost[] = {

       "POST /cgi-bin/webcm HTTP/1.1",
       "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*",
       "Referer: http://" + host,
       "Accept-Language: ru",
       "Content-Type: application/x-www-form-urlencoded",
       "Accept-Encoding: gzip, deflate",
       "User-Agent: Own",
       "Host: "+ host,
       "Content-Length: " + len,
       "Connection: Keep-Alive",
       "Cache-Control: no-cache",
       "",
       "getpage=..%2Fhtml%2Fframe.htm&errorpage=..%2Fhtml%2Findex.html&login%3Acommand%2Fusername=" + auth[0] + "&login%3Acommand%2Fpassword=" + auth[1] + "&var%3Aerrormsg=Error"
                           
                        };

    String adminPost[] = {

       "POST /cgi-bin/webcm HTTP/1.1",
       "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*",
       "Referer: http://" + host + "/cgi-bin/webcm",
       "Accept-Language: ru",
       "Content-Type: application/x-www-form-urlencoded",
       "Accept-Encoding: gzip, deflate",
       "User-Agent: Own",
       "Host: " + host,
       "Content-Length: 82",
       "Connection: Keep-Alive",
       "Cache-Control: no-cache",
       "",
       "getpage=..%2Fhtml%2Fstatus%2Fconnstatus.htm&connection0%3Asettings%2Fmanual_conn=" + connect
                           
                        };

    int n;
    String delim = "\r\n";

    final JProgressBar progressBar = new JProgressBar( 0, 100 );
    progressBar.setIndeterminate(true);

    JDialog frame = new JDialog( new Frame(), args[1].equals("disconnect") ?
                                "Disconnecting!" : "Connecting!" );
    JPanel panel = new JPanel();
    panel.add(progressBar);
    frame.getContentPane().add(panel);
    frame.pack();   
    //Center the window
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();

    frame.setLocation( screenSize.width/2 - frameSize.width/2,
                       screenSize.height/2 - frameSize.height/2 );

    frame.requestFocus();
    frame.setVisible(true);
   
    Socket client = new Socket( host, port );
    OutputStream out = client.getOutputStream();         
    InputStream in = client.getInputStream();         

    for ( int i=0; i < authPost.length; ++i )
    {
      out.write( authPost[i].getBytes(), 0, authPost[i].length() );
      out.write( delim.getBytes(), 0, delim.length() );
      out.flush();
    }       
   
    StringBuffer strBuf = new StringBuffer();
    while ( ( n = in.read(buf) ) > 0 )
      strBuf.append( new String(buf, 0, n).toCharArray(), 0, n );

    client.close();

    if ( -1 != strBuf.toString().indexOf( "Your Login Name / Password is Invalid" ) )   
      error( "Authentication error!" );

    client = new Socket( host, port );
    out = client.getOutputStream();         
    in = client.getInputStream();               

    for ( int i=0; i < adminPost.length; ++i )
    {
      out.write( adminPost[i].getBytes(), 0, adminPost[i].length() );
      out.write( delim.getBytes(), 0, delim.length() );
      out.flush();
    }   
       
    strBuf = new StringBuffer();
    while ( ( n = in.read(buf) ) > 0 )
      strBuf.append( new String(buf, 0, n).toCharArray(), 0, n );

    client.close();

    if ( args[1].equals("disconnect") )
      ok( "Successfully disconnected!" );
    else
    {
      ok( "Successfully connected!" );
      /*
      System.out.println( strBuf.toString()  );
      Pattern p = Pattern.compile( "\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}" );
      Matcher m = p.matcher( strBuf.toString() );
      if ( m.matches() )
        ok( m.group() );   
      */
    }

    System.exit(0);   
  }
  catch ( Exception e )
  {
    error( e.toString() );
  }
  }


  public static void error ( String str ) 
  {
    JOptionPane.showMessageDialog( new Frame(),
                                   str,
                                   "Try again",
                                   JOptionPane.ERROR_MESSAGE);
    System.exit(1);
  }

  public static void ok ( String str ) 
  {
    JOptionPane.showMessageDialog( new Frame(),
                                   str,
                                   "Success!",
                                   JOptionPane.INFORMATION_MESSAGE);
  }



 
};




Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб ноя 20, 2004 23:50 
Не в сети

Зарегистрирован: Вт июл 27, 2004 19:13
Сообщений: 83
Откуда: Москва
Как и обещал : РЕСПЕКТ!!!! :lol:

Но :oops: теперь для совсем тупых! куда это все девать???
в html-ку, да?
ПЛИИИЗЗЗЗ! Расскажи как?

_________________
работал с DSL-500T, DSL-G604T, DI-704UP, DSL-G804V, DI-824VUP.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 21, 2004 14:48 
Не в сети

Зарегистрирован: Сб окт 23, 2004 18:11
Сообщений: 128
Откуда: Moscow
Rouming писал(а):
только 2 команды: connect, disconnect. точно таким же образом можно добавить restart, предварительно посмотрев на какой HTTP-пакет модем согласится рестартиться. отключив GUI, можно прикрутить вызов этого безобразия к cron'у и дергать автоматом. успехов )

Спасибо, отшень любопытно. Только остался один вопрос: каким образом смотреть посылаемые браузером HTTP-пакеты?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 21, 2004 15:22 
Не в сети

Зарегистрирован: Вт ноя 16, 2004 02:27
Сообщений: 15
Откуда: Moscow
2Leo2222
это Java-приложение. для запуска понадобится Java-машина. ну и компилятор, чтобы собрать исходник.
http://java.sun.com

2alexc
самое простое: воспользоваться всякими `tcpdump`ами и проанализировать весь траффик, выдернув все HTTP-пакеты. немножко утомительно, но зато ничего лишнего.
а можно заюзать программулины, которые перекидывают траффик с одного порта на другой и показывают все то, что через них проходит. обычно зовутся `TCPTunnel`ами (Гугл знает )) таким образом, мы видим весь диалог между броузером и веб-интерфейсом модема. затем, копируем какой-нибудь нужный нам пакет и посылаем его откуда-нибудь извне, как в коде, приведенном выше. ничего хитрого )


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс ноя 21, 2004 18:24 
Не в сети

Зарегистрирован: Вт июл 27, 2004 19:13
Сообщений: 83
Откуда: Москва
Rouming писал(а):
2Leo2222
это Java-приложение. для запуска понадобится Java-машина. ну и компилятор, чтобы собрать исходник.
http://java.sun.com


:P Ясен перец! Те в итоге получится екзешник?
Как это сделать из браузера? ВМ- стоит.

ЗЫ. Я не шарю в веб программировании. Если не сложно, напиши код.

ЗЫ2. от темы месаги все далее и далее :D

_________________
работал с DSL-500T, DSL-G604T, DI-704UP, DSL-G804V, DI-824VUP.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт ноя 23, 2004 22:49 
Не в сети

Зарегистрирован: Сб окт 23, 2004 18:11
Сообщений: 128
Откуда: Moscow
Rouming писал(а):
самое простое: воспользоваться всякими `tcpdump`ами и проанализировать весь траффик, выдернув все HTTP-пакеты. немножко утомительно, но зато ничего лишнего

Спасибки, нашел HTTPLook, самое оно, даже не утомляет :) И вообще, твой метод подлога намного полезнее, ведь web-интерфейс модема - не единственная html-форма, которую не охота заполнять ;)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 24, 2004 13:56 
Не в сети

Зарегистрирован: Вт сен 14, 2004 14:37
Сообщений: 10
Откуда: Taganrog
я щас это прочел и осознал на сколько dlink500t не стабильный модем, а возможно сама по сабе adsl технология не совершенна, но к моему сожалению я не пробовал других модемов. щас я наблюдаю картину как фирма выбросила сырые модемы на рынок, а мы те кто решили сэкономить и взять САМЫЕ дешевые модемы выступаем теперь в качестве бета-тестеров. шлем логи, ковыряемся с прошивками. а вам не задумывалось, что то что вы сочиняете должно было быть уже вшито в модем? т.е. вы выполняете за бесплатно работу.

ну да ладно раз уж мы собрались тут все братья по несчастью я выскажусь и по теме, нормальный модем даже при обрыве связи должен восстанавливать коннект, чего наш любимый девайс не всегда делает, лично я сам в ручную когда нажимаю пимпочку connect/dissconect в разделе Connection status не получаю результата (хотя прошивка у меня последняя 20041014), поэтому я раньше перезагружал, а щас просто меняю тип модуляции (Setup->DSL Setup) - это без шуток, при перемене типа модуляции модем сам делает disconnect, а потом connect и связь почти всегда восстанавливается, благо у моего провайдера работает как как GLITE, так и MMODE - так что я знай себе переключаю каждое утро (когда связь "зависает") от одного к другому, и это работает на чуточку быстрее чем перезагрузка модема - а эффективность таже.

правда у меня есть еще один более автоматизированный метод на заметке, но все руки его до ума довести не доходят - а идея вот в чем, знаете есть программируемые telent клиенты, там простейшие скрипты уровня bat файлов, вот написать например такой скрипт, чтобы он через телнет логинился на модем, а там уже перезапускал ppp и прочие нужные рюшечки. в качестве программируемого клиента телнета есть много всего, например тот же zoc.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 25 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB