繁体   English   中英

Java / JSch中的SSH命令给出退出代码-1

[英]SSH command in Java/JSch giving exit code -1

我正在使用Java中的JSch远程检查服务器的文件修改状态。 除了输出,我还在检查退出代码。 当测试服务器运行良好并且将退出代码设置为0时,生产服务器将抛出退出代码-1。 我如何获得有关此-1及其含义的更多详细信息。

这是我的代码,删除了敏感区域。
我如何在最后一行getExitStatus上获取更多详细信息。

JSch js=new JSch(); 
Session s = js.getSession(username, host, 22);
s.setPassword(password);

Properties ssconfig = new Properties();
ssconfig.put("StrictHostKeyChecking", "no");
s.setConfig(ssconfig);
s.connect();

Channel c = s.openChannel("exec");
ChannelExec ce = (ChannelExec) c;

ce.setCommand("cd <some file dir> && date && ls -ltr");
ce.setErrStream(System.err);

ce.connect();

/*
 * temporary test print
 */
BufferedReader reader = new BufferedReader(new InputStreamReader(ce.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
  System.out.println(line);
}

/*
 * end of temporary print
 */
ce.disconnect();
s.disconnect();

System.out.println("Exit code: " + ce.getExitStatus());

return ce.getExitStatus();

当退出代码未知时, getExitStatus返回-1。

您可能需要等待Channel.isClosed才能调用Channel.disconnect


在您的测试环境中,连接或服务器在读取之前可能足够快来填充退出状态。 在生产服务器上则不是。 一个简单的比赛条件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM