forum.bitel.ru
http://forum.bitel.ru/

Шлюз, скрипт, 4.6, telnet. doCommand и квадратные скобки
http://forum.bitel.ru/viewtopic.php?f=7&t=2450
Страница 1 из 1

Автор:  Dizelsky [ 17 июн 2009, 09:45 ]
Заголовок сообщения:  Шлюз, скрипт, 4.6, telnet. doCommand и квадратные скобки

Очень хочется сделать:
класс bitel.billing.server.util.telnet.TelnetSession
session.doCommand( "some command [some text]" );

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

Как быть?

Автор:  stark [ 17 июн 2009, 13:15 ]
Заголовок сообщения: 

да вроде не должно быть..попробуйте поставить timeout у TelnetSesssion если это версия 4.6

Автор:  Dizelsky [ 17 июн 2009, 14:06 ]
Заголовок сообщения: 

пробовал, картина та же

Автор:  stark [ 17 июн 2009, 18:59 ]
Заголовок сообщения: 

я сделал так ой тест на станадратном софтовом telnet:

Код:
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.StringTokenizer;
 
import bitel.billing.common.module.ipn.IPNContractStatus;
import bitel.billing.server.ipn.GateWorker;
import bitel.billing.server.ipn.UserStatus;
import bitel.billing.server.ipn.bean.*;
import bitel.billing.server.util.DefaultServerSetup;
import bitel.billing.server.util.Utils;
import bitel.billing.server.util.telnet.OperationTimedoutException;
import bitel.billing.server.util.telnet.TelnetSession;
import ru.bitel.bgbilling.common.DefaultSetup;
import bitel.billing.common.IPUtils;
import bitel.billing.server.util.Utils;
import bitel.billing.server.util.telnet.OperationTimedoutException;
import bitel.billing.server.util.telnet.TelnetSession;

 
//includeBGBS( "bgbs://ru.bitel.bgbilling.kernel.script.common.bean.ScriptLibrary/manad" );
 
protected void doSync()
{
      log.info( "start of cisco........................................................");
      host = gate.getHost();
      port = gate.getPort();
 
 
      DefaultServerSetup gateSetup = new DefaultServerSetup( gate.getConfig(), "\r\n" );       
 
      pswd = gate.getKeyword();      
      login = gateSetup.getStringValue( "login");
       timeout = gateSetup.getIntValue( "timeout", 0 );      
 
      result = new StringBuffer();

 
      if( log.isDebugEnabled() )
      {
          log.debug( gate.getId() + " gate: " + host + ":" + port  + " login: " + login + " passwd: " +        pswd );
      }
 
 
       log.debug("before connect");
      session = new TelnetSession( host, port);
       session.setTimeout( timeout );
      session.setLoginPromptSequence( ":" );                  
      session.connect();
      log.debug("after connect");
 
      result.append( session.doCommand( login ) );
      log.debug("after login");
      session.setLoginPromptSequence( "$" );
      result.append( session.doCommand( pswd ) );
      log.debug("after pswd");
 
      result.append( session.doCommand( "ls [bla-bla]" ) );

      log.debug("after terminal");

      session.doCommandAsync( "exit" );

 
      log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
      log.info( result );
      log.info("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");      
 
      log.debug( "ok" );
   
 
   log.info( "end of cisco........................................................");
}
 


отработало :
Код:
 06-17/18:56:49  INFO [Thread-7] CiscoVlanGateWorker - Password:
Last login: Wed Jun 17 18:54:20 from localhost.localdomain
[king@ts03 ~]$ ls [bla-bla]
ls: ???µ?????·?????¶???? ?????»?????????? ???????????? ?? [bla-bla]: ???µ?? ???°???????? ???°???»?° ???»?? ???°???°?»?????°
[king@ts03 ~]$


что у вас за железка?..покажите листинг команд (прсто вручную начина от авторизации до ваших "[" )

Автор:  Dizelsky [ 25 июн 2009, 09:27 ]
Заголовок сообщения: 

Нашел!!!!

Я делаю коннект к микротику. Когда отправляешь "trash trash trash trash [ trash2 trash2 trash2 trash2 ]" - Микротик исправно ругается ERROR: no such command or directory (trash2)

Когда пишешь что-то нормальное - "/ip firewall rule billing disable [ip firewall rule billing find src-address=1.1.1.1/32]" - рутер, скорее всего, отрабатывает вложенную команду, но внешняя команда не отрабатывается. Скрипт виснет.

Как лечить, доктор?

Автор:  stark [ 25 июн 2009, 11:02 ]
Заголовок сообщения: 

Dizelsky писал(а):
Нашел!!!!

Я делаю коннект к микротику. Когда отправляешь "trash trash trash trash [ trash2 trash2 trash2 trash2 ]" - Микротик исправно ругается ERROR: no such command or directory (trash2)

Когда пишешь что-то нормальное - "/ip firewall rule billing disable [ip firewall rule billing find src-address=1.1.1.1/32]" - рутер, скорее всего, отрабатывает вложенную команду, но внешняя команда не отрабатывается. Скрипт виснет.

Как лечить, доктор?


[] - это вложенная команад для mikrotik ? дайте листинг комнады и какой результат выдает mikrotik (нуберите вручную и скопируйте сюда из консоли). и так код вашего шлюза , где посылаются команды

Автор:  Dizelsky [ 27 июн 2009, 03:39 ]
Заголовок сообщения: 

да, это вложенные команды. Собственно команду find в микротике никак иначе не используешь, т.к. в терминал она ничего не возвращает. Выполняя её в квадратных скобках получаешь ID подходящей записи, будь то IP адрес или правило в цепочке. Мне так кажется, что какое-то хитрое взаимодействие с терминалом таки происходит.

Листинг:
/ip firewall rule billing disable [ip firewall rule billing find src-address=1.1.1.1/32]

Если просто выкинуть команду в ssh или telnet терминал - всё сработает. Подтверждается и на том скрипте, что приведен вами выше.

Автор:  stark [ 29 июн 2009, 16:46 ]
Заголовок сообщения: 

Dizelsky писал(а):
да, это вложенные команды. Собственно команду find в микротике никак иначе не используешь, т.к. в терминал она ничего не возвращает. Выполняя её в квадратных скобках получаешь ID подходящей записи, будь то IP адрес или правило в цепочке. Мне так кажется, что какое-то хитрое взаимодействие с терминалом таки происходит.

Листинг:
/ip firewall rule billing disable [ip firewall rule billing find src-address=1.1.1.1/32]

Если просто выкинуть команду в ssh или telnet терминал - всё сработает. Подтверждается и на том скрипте, что приведен вами выше.


не опнял что знаичт потеврждается ?? т.е на моем скрипте тоже виснет ?

я просил дать рапечатку ответа из терминала . интресуюет что он выдает в ответ этой команыж..может быть там меняется исмвол приглашения и скрипт его вечно ждет . setTimeout e у TelnetSession пробовали поставить ? напрмер 2000

Автор:  Dizelsky [ 30 июн 2009, 09:43 ]
Заголовок сообщения: 

Цитата:
не опнял что знаичт потеврждается ?? т.е на моем скрипте тоже виснет ?

да


Если сроку "/ip firewall rule billing disable [ip firewall rule billing find src-address=1.1.1.1/32]" бросить в терминал - она отработается как любая другая, символ приглашения не изменится. Таймаут не меняет ничего. Лучше вам провести лаб-тест и запулить в микротик такую команду (ну или любую другую с вложенной командой)

Автор:  stark [ 30 июн 2009, 18:58 ]
Заголовок сообщения: 

Dizelsky писал(а):
Цитата:
не опнял что знаичт потеврждается ?? т.е на моем скрипте тоже виснет ?

да


Если сроку "/ip firewall rule billing disable [ip firewall rule billing find src-address=1.1.1.1/32]" бросить в терминал - она отработается как любая другая, символ приглашения не изменится. Таймаут не меняет ничего. Лучше вам провести лаб-тест и запулить в микротик такую команду (ну или любую другую с вложенной командой)


да под это дело ставить микротик нетохота , мы его снесли . проще если кто-то даст доступ ..

Автор:  Dizelsky [ 30 июн 2009, 19:00 ]
Заголовок сообщения: 

дам, аська и мыло в профиле

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/