forum.bitel.ru http://forum.bitel.ru/ |
|
[BGB5.1] Не работает с ZyXEL http://forum.bitel.ru/viewtopic.php?f=7&t=4854 |
Страница 1 из 1 |
Автор: | KaDaBRa [ 02 дек 2010, 14:17 ] |
Заголовок сообщения: | [BGB5.1] Не работает с ZyXEL |
После обновления с 4.6 до версии 5.1, биллинг перестал открывать\закрывать шлюзы. Если руками коннектится с сервера до свитча ,то всё нормально работает. Если пытаться через биллинг, то долго думает и выдает в server.log такое: Код: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:325) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:268) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:139) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:101) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - java.lang.RuntimeException: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:282) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:139) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:101) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - Caused by: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:47) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BSHBlock.evalBlock(BSHBlock.java:131) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BSHBlock.eval(BSHBlock.java:81) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BshMethod.invokeImpl(BshMethod.java:362) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:258) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bsh.BshMethod.invoke(BshMethod.java:161) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:325) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:268) 12-02/16:23:09 ERROR [Thread-29] LoggingPrintStream - ... 2 more 12-02/16:23:09 ERROR [Thread-29] CiscoSSHSwitchGateWorker - Gate unaccesible - 172.18.5.167 12-02/16:23:09 ERROR [Thread-29] CiscoSSHSwitchGateWorker - ------------------------- 12-02/16:23:09 ERROR [Thread-29] CiscoSSHSwitchGateWorker - error: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed java.lang.RuntimeException: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:282) at bitel.billing.server.ipn.GateWorker.runSync(GateWorker.java:139) at bitel.billing.server.ipn.GateWorker.run(GateWorker.java:101) Caused by: TargetError : at Line: 109 : in file: inline evaluation of: ``import java.util.*; import java.util.regex.*; import java.util.regex.Pattern.* . . . '' : throw new RuntimeException ( e ) ; Target exception: java.lang.RuntimeException: java.io.IOException: Pipe closed at bsh.BSHThrowStatement.eval(BSHThrowStatement.java:53) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BSHBlock.eval(BSHBlock.java:47) at bsh.BSHTryStatement.eval(BSHTryStatement.java:166) at bsh.BSHBlock.evalBlock(BSHBlock.java:131) at bsh.BSHBlock.eval(BSHBlock.java:81) at bsh.BshMethod.invokeImpl(BshMethod.java:362) at bsh.BshMethod.invoke(BshMethod.java:258) at bsh.BshMethod.invoke(BshMethod.java:161) at bitel.billing.server.ipn.GateWorker$Scripter.invokeMethod(GateWorker.java:325) at bitel.billing.server.ipn.GateWorker$Scripter.runScriptSync(GateWorker.java:268) ... 2 more Что может быть? куда копать? Версии Клиент: вер. 5.1 сборка 431 от 30.11.2010 13:57:29 os:Windows 7; java:Sun Microsystems Inc., v.1.6.0_20 Сервер: вер. 5.1 сборка 543 от 30.11.2010 13:57:20 os:Linux; java:Sun Microsystems Inc., v.1.6.0_22 ipn вер. 5.1 сборка 213 от 29.11.2010 19:07:45 |
Автор: | Amir [ 03 дек 2010, 15:00 ] |
Заголовок сообщения: | Re: [BGB5.1] Не работает с ZyXEL |
Шлюз скриптовый? Выложите скрипт... |
Автор: | KaDaBRa [ 07 дек 2010, 11:21 ] |
Заголовок сообщения: | Re: [BGB5.1] Не работает с ZyXEL |
Код: import java.util.*; import java.util.regex.*; import java.util.regex.Pattern.*; 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.ManadUtils; import bitel.billing.server.ipn.bean.VlanManager; import bitel.billing.server.util.DefaultServerSetup; import bitel.billing.server.util.ssh.SSHSession; import bitel.billing.server.ipn.UserStatus; import ru.bitel.bgbilling.common.DefaultSetup; import bitel.billing.server.ipn.bean.GateType; import bitel.billing.server.ipn.bean.LoopPattern; import bitel.billing.server.ipn.bean.RuleType; import bitel.billing.server.ipn.bean.UserGateRuleManager; protected void doSync() { log.info("start of SSH_SWITCH........................................................"); host = gate.getHost(); port = gate.getPort(); String macAddr = ""; String ipAddr = ""; String swPort = ""; gateSetup = new DefaultSetup( gate.getConfig(), "\r\n" ); // берем IPoE vlan в настройках шлюза zyxel int IPoE_vid = gateSetup.getIntValue( "IPoE_vlan", 4000 ); // берем PPPoE vlan в настройках шлюза zyxel. Пока не используем, но может пригодиться... int PPPoE_vid = gateSetup.getIntValue( "PPPoE_vlan", 4000 ); login = gateSetup.getStringValue( "login", "admin" ); timeout = gateSetup.getIntValue( "timeout", 4000 ); pswd = gate.getKeyword(); if( log.isDebugEnabled() ) { log.info( " gate: " + host + ":" + port + " login: " + login + " pswd: " + pswd ); } session = null; result = new StringBuffer(); try { log.info("Connect to: "+host+":"+port+" as "+login+"/"+pswd); session = new SSHSession( host, port, login, pswd ); session.setTimeout( timeout ); session.connect(); result.append( session.command( "configure" ) ); //VlanManager manager = new VlanManager(mid, con); log.info( "running commands"); for( UserStatus status : statusList ) { // берем vlan из "Ресурсы vlan" в редактировании шлюза у юзера // в свою очередь номер влана там появляется из параметра шлюза range // в соответствии с порядковым номером в строке: // range=10;11;12;13;14;15 порт N2 будет иметь vlan 11 // int Mgt_vid = manager.getVlan( gate.getId(), status.contractId ); int Mgt_vid = PPPoE_vid; // берем MAC в настройках шлюза у юзера UserGateRuleManager ugrm = new UserGateRuleManager(con, mid); List userRules = ugrm.getUserGateRules(status.contractId); String rule_text = userRules.get(0).getRuleText(); log.info("rule_text: " + rule_text); // Pattern p = Pattern.compile("(\\d+.\\d+.\\d+.\\d+):(\\d+):?(\\p{XDigit}+)-(\\p{XDigit}+)-(\\p{XDigit}+)-(\\p{XDigit}+)-(\\p{XDigit}+)-(\\p{XDigit}+)?"); Pattern p = Pattern.compile("(\\d+.\\d+.\\d+.\\d+):(\\d+)"); Matcher m = p.matcher(rule_text); if(m.find()) { ipAddr = m.group(1); swPort = m.group(2); log.info( "ipAddr=" + ipAddr + "; swPort=" + swPort ); } log.info( "IPoE_vid=" + IPoE_vid + "; PPPoE_vid=" + PPPoE_vid + " Mgt_vid=" + Mgt_vid ); if ( ipAddr == "" || swPort == "" ) { log.info("Error: no link - IP address or Port number not defined"); } else { if ( status.status == IPNContractStatus.STATUS_OPEN ) { rules = getOpenRules2( status, Mgt_vid, IPoE_vid, macAddr, ipAddr, swPort ); for ( String rule : rules ) { result.append( session.command( rule ) ); } } else { rules = getCloseRules2( status, Mgt_vid, IPoE_vid, macAddr, ipAddr, swPort ); for ( String rule : rules ) { result.append( session.command( rule ) ); } } } } result.append( session.command( "exit" ) ); } catch ( Exception e ) { // log.error("", e ); log.info(e.getMessage()); throw new RuntimeException ( e ); } finally { if( session != null ) { session.disconnect(); } log.info( "end of SSH_SWITCH........................................................"); } } getOpenRules( UserStatus status, int vid ) { return getRules( status, "\\[OPEN\\](.*)\\[\\/OPEN\\]", vid ); } getCloseRules( UserStatus status, int vid ) { return getRules( status, "\\[CLOSE\\](.*)\\[/CLOSE\\]", vid ); } getOpenRules2( UserStatus status, int PPPoE_vid, int IPoE_vid, macAddr, ipAddr, swPort ) { return getRules2( status, "\\[OPEN\\](.*)\\[/OPEN\\].*", PPPoE_vid, IPoE_vid, macAddr, ipAddr, swPort ); } getCloseRules2( UserStatus status, int PPPoE_vid, int IPoE_vid, macAddr, ipAddr, swPort ) { return getRules2( status, "\\[CLOSE\\](.*)\\[/CLOSE\\]", PPPoE_vid, IPoE_vid, macAddr, ipAddr, swPort ); } getRules( status, template, vid ) { // пользовательское правило, без типа - то все оставляем как есть rule = status.rule.getRuleText(); //порты идут до #, а адреса идут после String [] parts = rule.split( "#" ); portsStr = ""; addresesStr = ""; if ( parts.length > 0 ) { portsStr = parts[0]; } if ( parts.length > 1 ) { addresesStr = parts[1]; } //типизированное правило if( status.ruleType != null ) { rule = generateRule( addresesStr, portsStr, vid, status.gateType, status.ruleType ); } // здесь 32 - это флаг DOTALL, т.е. в точку . включается все, в том числе и \n pattern = Pattern.compile( template, 32 ); m = pattern.matcher( rule ); if (m.find()) { rule = m.group( 1 ); } else { log.info("regexp not match"); } rule.replaceAll( "\r", "" ); parts = rule.split( "\n" ); return parts; } getRules2( status, template, int PPPoE_vid, int IPoE_vid, macAddr, ipAddr, swPort ) { // пользовательское правило, без типа - то все оставляем как есть rule = status.rule.getRuleText(); //порты идут до #, а адреса идут после String [] parts = rule.split( "#" ); portsStr = ""; addresesStr = ""; if ( parts.length > 0 ) { portsStr = parts[0]; } if ( parts.length > 1 ) { addresesStr = parts[1]; } //типизированное правило if( status.ruleType != null ) { rule = generateRule2( addresesStr, portsStr, PPPoE_vid, IPoE_vid, status.gateType, status.ruleType, macAddr, ipAddr, swPort ); } // здесь 32 - это флаг DOTALL, т.е. в точку . включается все, в том числе и \n pattern = Pattern.compile( template, 32 ); m = pattern.matcher( rule ); if (m.find()) { rule = m.group( 1 ); } else { log.info("regexp not match"); } log.info("result: "+rule); rule.replaceAll( "\r", "" ); parts = rule.split( "\n" ); return parts; } generateRule( addreses, ports, vid, gateType, ruleType ) { ports_ = getPorts( ports ); ruleText = ManadUtils.getRule( gateType, ruleType ); replacements = new HashMap(); if ( vid > 0) { replacements.put( "\\{VID\\}", String.valueOf( vid ) ); } loops = ManadUtils.getAddresLoops( addreses ); //адреса p = new LoopPattern(); p.setLoopPatern( "LOOP_PORT" ); p.setReplace( "\\{PORT\\}" ); p.setObjects( ports_ ); loops.add( p ); return ManadUtils.generateRule( ruleText, replacements, ruleType, loops ); } generateRule2( addreses, ports, int PPPoE_vid, int IPoE_vid, gateType, ruleType, macAddr, ipAddr, swPort ) { ports_ = getPorts( ports ); ruleText = ManadUtils.getRule( gateType, ruleType ); replacements = new HashMap(); if ( PPPoE_vid > 0) { replacements.put( "\\{PPPOE_VID\\}", String.valueOf( PPPoE_vid ) ); } if ( IPoE_vid > 0) { replacements.put( "\\{IPOE_VID\\}", String.valueOf( IPoE_vid ) ); } // if ( macAddr == "" || ipAddr == "" || swPort == "" ) { if ( ipAddr == "" || swPort == "" ) { replacements.put( "!.*ip source binding.*", "" ); } else { if ( macAddr != "" ) { replacements.put( "\\{MAC_ADDR\\}", macAddr );} if ( ipAddr != "" ) { replacements.put( "\\{IP_ADDR\\}", ipAddr ); } if ( swPort != "" ) { replacements.put( "\\{SW_PORT\\}", swPort ); } // replacements.put( "!ip source binding", "ip source binding" ); // replacements.put( "!no ip source binding", "no ip source binding" ); replacements.put( "!.*ip source binding.*", "" ); } loops = ManadUtils.getAddresLoops( addreses ); //адреса p = new LoopPattern(); p.setLoopPatern( "LOOP_PORT" ); p.setReplace( "\\{PORT\\}" ); p.setObjects( ports_ ); loops.add( p ); return ManadUtils.generateRule( ruleText, replacements, ruleType, loops ); } getPorts( ports ) { portList = new ArrayList(); parts = ports.split( ";" ); for (String part : parts ) { parts2 = part.split( ":" ); if ( parts2.length < 2) { continue; } port = parts2 [1]; portList.add( port ); } String [] ports_ = new String [portList.size()]; for (int i = 0; i < ports_.length; i++) { ports_[i] = portList.get( i ); } return ports_; } Как я понял, он затыкается на отсылании комманды свитчу. Сначала затупляет на Код: result.append( session.command( "configure" ) ); Если её закомментить, то затупляет уже на Код: result.append( session.command( rule ) ); Кажется дело в SSH клиенте сервера. |
Автор: | stark [ 29 дек 2010, 12:59 ] |
Заголовок сообщения: | Re: [BGB5.1] Не работает с ZyXEL |
уберите обработку ошибок Код: try { ..... } catch ( Exception e ) { // log.error("", e ); log.info(e.getMessage()); throw new RuntimeException ( e ); } И снова покажите ошибку из лога . |
Автор: | stark [ 29 дек 2010, 13:09 ] |
Заголовок сообщения: | Re: [BGB5.1] Не работает с ZyXEL |
Еще обновитесь , там было исправлено несколь ошибок я ядре , связанныз с telnet/ssh. залогинтесь на шлюз из консоли , наберете configure, потом какую-нибудь команду и покажите тут содержимое консоли |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |