【发布时间】:2019-01-30 09:46:17
【问题描述】:
我正在从 jsch 执行 cmd ,一旦命令完成,我需要显示命令输出。在读取命令输出时,它需要很长时间,并且即使在执行命令之后,它的 ns 也不会来自 while 循环。以下是我的代码:
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
session=jsch.getSession(user, host, 22);
session.setConfig("PreferredAuthentications","publickey,keyboard-interactive,password");
session.setPassword(password);
session.setConfig(config);
session.connect();
System.out.println("Connected");
channel=session.openChannel("shell");
OutputStream ops = channel.getOutputStream();
PrintStream ps = new PrintStream(ops, true);
channel.connect();
ps.println(cmd);
InputStream in=channel.getInputStream();
byte[] tmp=new byte[1024];
while(channel.getExitStatus() == -1){
while(in.available()>0){
int i=in.read(tmp, 0, 1024);
if(i<0)break;
System.out.print(new String(tmp, 0, i));
}
if(channel.isClosed()){
System.out.println("exit-status: "+channel.getExitStatus());
break;
}
try{Thread.sleep(3000);}catch(Exception ee){}
}
【问题讨论】:
标签: java linux jakarta-ee java-io jsch