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/ |