gpt4 book ai didi

java - 自动关闭和断开 java sshj session

转载 作者:太空宇宙 更新时间:2023-11-04 07:35:36 25 4
gpt4 key购买 nike

我正在使用 java 的 sshj 库。

我需要在远程服务器上打开一个 ssh session ,执行一个可能运行几分钟的命令,然后继续在我的 java 代码中执行。一旦远程服务器上运行的命令完成,我希望关闭 ssh session ,并断开 ssh 客户端的连接。

我看过以下代码示例:

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()ssh.disconnect() 。这可能吗?

最佳答案

我可能无法准确回答我的问题,但也许可以为其他尝试做与我正在做的事情类似的事情的人提供帮助。当我发帖时,我的印象是 ssh session 必须保持打开状态才能完成命令,但我认为情况并非如此。

所以我想做的是通过java启动远程ssh session ,并在远程计算机上运行shell脚本。 shell 脚本可能需要 10-15 分钟才能完成。我测试了短暂的超时(5 秒),并且脚本在 session 断开连接后继续运行...这就是我想要的。

关于java - 自动关闭和断开 java sshj session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16930690/

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