JSch : channel never closed or EOF 通道未关闭

Posted 太白的技术博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSch : channel never closed or EOF 通道未关闭相关的知识,希望对你有一定的参考价值。

最近,我们的项目在开发远程节点管理的时候,使用了jsch库。在测试的时候发现有个节点在cmd执行完成之后,channel.isClosed()一直都是false,导致请求无法返回,但是其它有些节点就没有关系,直接执行都是正常的,返回码也是完全相同。经google,也没有找到相应解决方法比如https://github.com/lucastheisen/jsch-extension/issues/6,https://stackoverflow.com/questions/12138777/jsch-channel-never-closed-or-eof(加上exit并无法解决),经仔细研究与分析,以及帖子https://sourceforge.net/p/jsch/mailman/message/24270241/,可知可能确实会出现channel无法检测到close的情况。最后解决方法:

判断channel.exitStatus是否为0,为0代表正常结束了,因为-1代表命令还没有执行完。后续观察看看有没有其他不正确的误报情况。

参考:

https://sourceforge.net/p/jsch/mailman/jsch-users/thread/4B39D620.30006%40i4s.co.jp/#msg24270241

以上是关于JSch : channel never closed or EOF 通道未关闭的主要内容,如果未能解决你的问题,请参考以下文章

jsch channel is not opened原因及解决

JAVA Sftp 上传下载

java使用jsch远程链接linux执行命令

“会话”与“通道”(JSch 和 sshd)

sftp批量上传及批量下载等最全功能的工具类SFTPUtils

连接获取上传sftp远程目录信息的工具类FtpsFileList