вот скрипт, было сделано по аналогии, посмотрите в чем может быть ошибка?
Код:
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.*;
import java.sql.*;
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.Utils;
import bitel.billing.server.util.telnet.OperationTimedoutException;
import bitel.billing.server.util.telnet.TelnetSession;
import bitel.billing.server.ipn.bean.AddressRange;
import bitel.billing.server.ipn.bean.AddressRangeManager;
import bitel.billing.server.util.DefaultServerSetup;
import bitel.billing.common.IPUtils;
protected void doSync()
{
try
{
log.info( "#############################################################################");
log.info( "############################## start of cisco2 ##############################");
log.info( "#############################################################################");
DefaultServerSetup gateSetup = new DefaultServerSetup( gate.getConfig(), "\r\n" );
catalyst_ip = gate.getHost();
port = gate.getPort();
catalyst_login = gateSetup.getStringValue("catalyst.login");
catalyst_password = gate.getKeyword();
catalyst_enable = gateSetup.getStringValue( "catalyst.enable");
router_ip = gateSetup.getStringValue( "router.ip");
router_login = gateSetup.getStringValue( "router.login");
router_password = gateSetup.getStringValue( "router.password");
dhcp_status = gateSetup.getStringValue( "dhcp.status");
router_status = gateSetup.getStringValue( "router.status");
for( UserStatus status : statusList )
if (status.status == IPNContractStatus.STATUS_OPEN)
{ gate_status = "OPEN"; rule = getRulesAll( status, 1 , dhcp_status ); break;}
else
if (status.status == IPNContractStatus.STATUS_REMOVED)
{ gate_status = "REMOVE"; rule = getRulesAll( status , 3 , dhcp_status ); break; }
else { gate_status = "CLOSE"; rule = getRulesAll( status , 2 , dhcp_status ); break; }
log.info( "Status Gate = "+gate_status);
log.info( ".............................. start of Router ..............................");
StringBuffer result = new StringBuffer();
TelnetSession session_r = new TelnetSession( router_ip, port);
session_r.setLoginPromptSequence( ":" );
session_r.connect();
result.append( session_r.doCommand( router_login ) );
session_r.setLoginPromptSequence( ">" );
result.append( session_r.doCommand( router_password ) );
session_r.setLoginPromptSequence( ":" );
result.append( session_r.doCommand( "enable" ) );
session_r.setLoginPromptSequence( "#" );
result.append( session_r.doCommand( router_enable ) );
result.append( session_r.doCommand( "configure terminal" ) );
log.debug( "execute commands" );
getRulesSession( session_r, result , rule ,"\\[ROUTER_"+gate_status+"\\](.*)\\[/ROUTER_"+gate_status+"\\]");
result.append( session_r.doCommand( "exit" ) );
log.info( "=========================== Report Session Router ==========================");
log.info( result.toString() );
log.info( "+++++++++++++++++++++++++++++++ end of Router +++++++++++++++++++++++++++++++");
log.info( "............................. start of CATALYST .............................");
StringBuffer result = new StringBuffer();
TelnetSession session = new TelnetSession( catalyst_ip , port );
session.setLoginPromptSequence( ":" );
session.connect();
result.append( session.doCommand( catalyst_login ) );
session.setLoginPromptSequence( ">" );
result.append( session.doCommand( catalyst_password ) );
session.setLoginPromptSequence( ":" );
result.append( session.doCommand( "enable" ) );
session.setLoginPromptSequence( "#" );
result.append( session.doCommand( catalyst_enable ) );
result.append( session.doCommand( "configure terminal" ) );
log.debug( "execute commands" );
getRulesSession( session , result , rule,"\\[CATALYST_"+gate_status+"\\](.*)\\[/CATALYST_"+gate_status+"\\]");
result.append( session.doCommand( "exit" ) );
log.info( "========================== Report Session CATALYST ==========================");
log.info( result.toString() );
log.info( "++++++++++++++++++++++++++++++ end of CATALYST ++++++++++++++++++++++++++++++");
} catch (Exception e)
{
throw new RuntimeException ( e );
}
log.info( "=============================== end of cisco2 ===============================");
}
private String getRulesAll( UserStatus status , int gate_status, String dhcp_status )
{
if( status.ruleType != null )
{
gateId = gate.getId();
cid = status.contractId;
VlanManager manager = new VlanManager(status.mid, con);
vlan = manager.getVlan( gateId, status.contractId );
date = new GregorianCalendar();
AddressRangeManager man = new AddressRangeManager( con, mid );
addressList = man.getContractAddressRange( cid, date, -1 );
for ( AddressRange range : addressList)
{
ip_integer = range.getAddr1();
log.info("ip address = " + IPUtils.convertIpToString( ip_integer ));
}
ps = con.prepareStatement( "select * from ip_resource_category_1 t1, ip_resource_range_1 t2 where t1.id = t2.category_id and t2.ip1 <= "+ip_integer+" and t2.ip2 >= "+ip_integer );
rs = ps.executeQuery();
while( rs.next() )
{
DefaultServerSetup ResourceIPSetup = new DefaultServerSetup( rs.getString("comment"), "\r\n" );
gate_interface = ResourceIPSetup.getStringValue("interface");
dhcp_mask = ResourceIPSetup.getStringValue("mask");
dhcp_gate = ResourceIPSetup.getStringValue("gate");
dhcp_dns_primary = ResourceIPSetup.getStringValue("dns.primary");
dhcp_dns_secondary = ResourceIPSetup.getStringValue("dns.secondary");
dhcp_ip_start= String.valueOf( rs.getString("ip1"));
dhcp_ip_end=String.valueOf( rs.getString("ip2"));
log.info("interface = " + gate_interface +
" : mask = " + dhcp_mask +
" : gate = " + dhcp_gate +
" : dns primary = " + dhcp_dns_primary +
" : dns secondary = " + dhcp_dns_secondary +
" : ip start = " + dhcp_ip_start +
" : ip end = " + dhcp_ip_end);
}
ps.close();
log.info("dhcp status = " + dhcp_status);
if (dhcp_status.equals("enable"))
{
String [] arguments = { "/usr/local/billing/dhcpd/dhcp_script.sh", String.valueOf(gate_status) , String.valueOf( vlan ), IPUtils.convertIpToString( ip_integer ) , dhcp_mask , dhcp_gate , dhcp_dns_primary , dhcp_dns_secondary, dhcp_ip_start, dhcp_ip_end };
Process process = Runtime.getRuntime().exec( arguments );
process.waitFor();
log.info( "Script DHCP exit Code = " + process.exitValue() );
}
Map replacements = new HashMap ();
replacements.put( "\\{VID\\}", String.valueOf( vlan ) );
replacements.put( "\\{interface\\}", gate_interface );
replacements.put( "\\{IP\\}", IPUtils.convertIpToString( ip_integer ) );
return ManadUtils.generateRule( ManadUtils.getRule( status.gateType, status.ruleType ), status.rule.getRuleText(), replacements, status.ruleType );
}
}
private void getRulesSession(TelnetSession session, StringBuffer result, String rule, String template)
{
Pattern pattern = Pattern.compile( template, Pattern.DOTALL );
Matcher m = pattern.matcher( rule );
if (m.find()) rule = m.group( 1 );
rule.replaceAll( "\r", "" );
parts = rule.split( "\n" );
for ( String part : parts )
if ( !Utils.isEmptyString( part ))
result.append( session.doCommand( part ) );
}