1
java sshクライアント(http://www.jcraft.com/jsch/)を使用してリモートマシンに接続し、コマンドを実行しています。 リモートマシンに接続してコマンドを実行するまで、コードは正常に動作しています。しかし、問題は、コマンドが正常に実行された後でもチャネルとセッションが切断されないということです。コマンド実行後にJsch java sshクライアントが切断されない
私は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());
}
}
最終的にブロックを追加した後、まだ動作していません。なぜwhileループが終了していないのかわかりません.... – user2315104