我开发了一个Java应用程序,可以在Linux环境中连接到一个IP地址,运行多个脚本并返回结果。我使用sshxcute库来完成这项任务,它工作得很好但是当sshxcute命令试图返回结果时间歇性地卡住,唯一的解决方法是强制sshxcute手动关闭ssh并丢失结果。 我的代码出了什么问题? 我猜sshexcute运行Result类有问题。
这是使用的方法之一:
private void sshcopyimage(SSHExec ssh) {
try {
// Create a ExecCommand, the reference class must be
// CustomTask
CustomTask ct3 = new ExecCommand("cd /screenShots",
"ls -tr | tail -1");
Result res3 = ssh.exec(ct3);
//The application stuck in this line intermittently.
filename = res3.sysout;
// Check result and print out messages.
if (res3.isSuccess) {
System.out.println("Return code: " + res3.rc);
System.out.println("sysout: " + res3.sysout);
output.setText("file name gotten.");
} else {
System.out.println("Return code: " + res3.rc);
System.out.println("error message: " + res3.error_msg);
output.setText("Error in getting the file name .");
}
} catch (TaskExecFailException e5) {
MyMessage.infoBox(e5.getMessage(), "Error");
output.setText("Error.");
System.out.println(e5.getMessage());
e5.printStackTrace();
} catch (Exception e6) {
MyMessage.infoBox(e6.getMessage(), "Error");
output.setText("Error.");
System.out.println(e6.getMessage());
e6.printStackTrace();
} finally {
//MyMessage.infoBox("Picture created.", "Message");
output.setText("Picture created.");
bashcommand();
}
}
此应用程序中使用的更类似的方法,所有这些方法间歇性地停留在同一行1/30。
答案 0 :(得分:0)
最后我找到了答案。 我用JSCH取代了excute库并且工作得很好。 我自己找到答案对我有好处:)