2

我想知道如何使用 Java11 在远程机器上创建文件/目录?

我确实尝试过使用:

process = Runtime.getRuntime()
         .exec("ssh root@" + hostname + " 'mkdir -p "+mdbDir+"'")
         .wait() or waitFor();

但是即使我使用wait()我也遇到了异常

java.lang.IllegalThreadStateException: process has not exited

请让我知道可以做什么。

4

2 回答 2

1

你应该只打电话Process.waitFor()不带Process.wait(). Object.wait是关于同步的。它与流程管理无关。

于 2019-12-05T03:04:59.280 回答
-1

您在这里有一个关于如何使用SSHClient来自 sshj 的很好的示例,更具体地用于您想要执行的任务:

从 Java 代码发送 ssh 命令

此外,您可能需要与目标服务器建立受信任的连接。检查来自您系统的 SSH 连接是否需要密码,如果您的系统和服务器具有受信任的连接,它将不会要求输入密码。

如果您仍然想在没有库的情况下使用您的方法,我猜问题是执行正在等待一些输入,例如将主机添加到 knowhosts 或密码,这就是进程不退出的原因。

于 2019-12-05T03:14:22.470 回答