Jsch错误返回代码不一致

我正在使用好的http://www.jcraft.com/jsch/库 – 但是当我运行一些命令时,我看到jsch不时会返回一个-1的getExitStatus,即使脚本运行正常(当我手动运行它一直是一个成功的0退出代码)。 有任何想法吗?

(似乎发生了各种各样的命令)

我放弃了Jsch – 以及它令人难以置信的无用API并切换到:

http://www.cleondris.ch/opensource/ssh2/

(Ganymede SSH2)。 我在JVM中使用ssh进行了很多工作,经过数月的24小时使用,ganymede已经certificate更加可靠。 而且更愉快。 我主要的抱怨是显然无法为SCP设置超时。

我遇到了同样的问题,然后在Jsch更新日志中遇到了这个问题(http://www.jcraft.com/jsch/ChangeLog):

  • function:添加了’Channel.isClosed()’。 在Channel.isClosed()== true之后应该调用Channel.getExitStatus()。

所以敲了这个:需要 channel.disconnect() 之前调用,否则仍然得到-1问题:

private static void waitForChannelClosure(ChannelExec ce, long maxwaitMs) { log.info("waitForChannelClosure >>>"); final long until = System.currentTimeMillis() + maxwaitMs; try { while (!ce.isClosed() && System.currentTimeMillis() < until) { log.info("SFTP channel not closed .. waiting"); Thread.sleep(250); } } catch (InterruptedException e) { throw new RuntimeException("Interrupted", e); } if (!ce.isClosed()) { throw new RuntimeException("Channel not closed in timely manner!"); } };