我正在为 java 使用 sshj 库。
我需要在远程服务器上打开一个 ssh 会话,执行一个可以运行几分钟的命令,然后继续在我的 java 代码中执行。一旦在远程服务器上运行的命令完成,我希望 ssh 会话关闭,并且 sshclient 断开连接。
我看过以下代码示例:
public class Exec {
public static void main(String... args) throws IOException {
final SSHClient ssh = new SSHClient();
ssh.loadKnownHosts();
ssh.connect("localhost");
try {
ssh.authPublickey(System.getProperty("user.name"));
final Session session = ssh.startSession();
try {
final Command cmd = session.exec("ping -c 1 google.com");
System.out.println(IOUtils.readFully(cmd.getInputStream()).toString());
cmd.join(5, TimeUnit.SECONDS);
System.out.println("\n** exit status: " + cmd.getExitStatus());
} finally {
session.close();
}
} finally {
ssh.disconnect();
}
}
}
基本上我不想等待命令完成(没有cmd.join
调用),并且我需要在命令退出后自动调用session.close()
and 。ssh.disconnect()
这可能吗?