今天和大家分享的是在工作中通过通过JSCH第三方链接linux执行相应命令,在等待读取返回结果流时阻塞,一直不返回,导致程序挂死的情况,
首先问题发生的原因,服务器大范围SSH版本升级导致
解决办法首先想到的就是升级jar包,但是升级jar包后并没有什么用。后来通过不断的百度,在官网上给了点提示,最后得到解决。
出问题的代码如下:
public String runTopShell(String command,boolean isGetResult)throws Exception{
StringBuilder stringBuffer;
// BufferedReader reader = null;
Channel channel = null;
stringBuffer = new StringBuilder();
channel = session.openChannel(“exec”);
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
channel.connect();
InputStream in = channel.getInputStream();
reader = new BufferedReader(new InputStreamReader(in,“UTF-8”));
String buf;
logger.info(“命令:”+command+"\r\n");
while (reader.ready()&&(buf = reader.readLine()) != null)
通过JSCH链接linux执行相应命令,在等待读取返回结果流时阻塞
最新推荐文章于 2024-06-28 09:31:42 发布