packagecn.com.casa.prov.service.session.impl;importjava.io.BufferedReader;importjava.io.InputStreamReader;importjava.io.PrintWriter;importpub.util.DateUtil;importpub.util.StringUtil;importpub.util.SystemUtil;importch.ethz.ssh2.ChannelCondition;importch.ethz.ssh2.StreamGobbler;importcn.com.casa.prov.domain.CasaSessionManager;importcn.com.casa.prov.service.session.BaseTask;/*** 多条命令任务
*@authorcz
**/
public class ComplicateTask extendsBaseTask{/*** 构造方法传入CasaSessionManager 对象主要包括目标服务器IP,目标服务器用户名,目标服务器密码
*
*@parammanager
*@throwsException*/
public ComplicateTask(CasaSessionManager manager) throwsException {super(manager);
}/*(non-Javadoc)
* 执行命令
* @see cn.com.casa.prov.service.session.TaskInterface#execute()*/@SuppressWarnings("deprecation")
@Overridepublic void execute() throwsException {
BufferedReader br= null;try{
logger.info("command:"+this.getManager().getCommand());
session.requestPTY("bash");
session.startShell();
br= new BufferedReader(new InputStreamReader(newStreamGobbler(session.getStdout())));
PrintWriter out=newPrintWriter(session.getStdin());
out.print(this.getManager().getCommand());
out.close();
session.waitForCondition(ChannelCondition.CLOSED| ChannelCondition.EOF | ChannelCondition.EXIT_STATUS, 30000);
StringBuffer baseBf=newStringBuffer();
baseBf.append("ServerIp:"+this.getManager().getTargetIp()+SystemUtil.LINE_FEED);
baseBf.append("time:"+DateUtil.getCurrectByDate());
StringBuffer bf=new StringBuffer("");while (true)
{
String line=br.readLine();if (line==null)
{break;
}
bf.append(line+SystemUtil.LINE_FEED);
}if(!StringUtil.checkStr(bf.toString())){
baseBf.append("request result is empty!!!"+SystemUtil.LINE_FEED);
}else{
baseBf.append(bf.toString().substring(bf.toString().indexOf("Password:")+9));
}
manager.setTime(DateUtil.getCurrectByDate());
manager.setMessage(baseBf.toString());
logger.info("message:"+bf.toString());
}catch(Exception e){
logger.error("error",e);
manager.setMessage("ServerIp:"+this.getManager().getTargetIp()+SystemUtil.LINE_FEED+"time:"+DateUtil.getCurrectByDate()+"\ncommand :"+manager.getCommand()+SystemUtil.LINE_FEED+"message:"+e.getLocalizedMessage());
}finally{if(br!=null){try{
br.close();
}catch(Exception e) {
logger.error("error",e);
}
}this.closeSession();
}
}
}