gpt4 book ai didi

java - 执行命令后,Jsch java ssh 客户端不会断开连接

转载 作者:行者123 更新时间:2023-12-02 14:08:27 28 4
gpt4 key购买 nike

我正在使用 java ssh 客户端( http://www.jcraft.com/jsch/ )连接到远程机器并执行命令。
代码工作正常,直到我连接到远程机器并执行命令。然而,问题是,即使在命令成功执行后, channel 和 session 也不会断开连接。

我也调用了 session.disconnect 和 channel.disconnect,但问题仍然存在。

这是我的代码:

    JSch jsch = new JSch();
String host = null;
host = "192.168.102.211";
String privateKey = "C:\\test\\key";
String cmd = "a";
String command = "b";

jsch.addIdentity(privateKey);
Session session = jsch.getSession("user1", host, 22);
Channel channel = session.openChannel("shell");

UserInfo ui = new MyUserInfo() {
public boolean promptYesNo(String message) {
return true;
}
};
session.setUserInfo(ui);
session.connect(30000);

OutputStream ops = channel.getOutputStream();
PrintStream ps = new PrintStream(ops, true);

channel.connect();
ps.println(cmd);
ps.println(command);
ps.close();

InputStream in = channel.getInputStream();
byte[] bt = new byte[1024];
while (in.available() > 0) {
// int i = in.read(bt, 0, 1024);
for (int i = in.read(); i >=0; i--)
{
String str = new String(bt, 0, i);
System.out.print(str);
}
break;

}

if (channel != null) {
channel.disconnect();
session.disconnect();
System.out.println(channel.isConnected());
}
}

请建议

最佳答案

使用相关代码更新您的问题。
只是一个提示,你应该做类似的事情。

} finally {
if (channel != null) {
Session session = channel.getSession();
channel.disconnect();
session.disconnect();
System.out.println(channel.isConnected());
}
}

关于java - 执行命令后,Jsch java ssh 客户端不会断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36151893/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com