0

我想执行

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=dev/null -i key.txt user@host 'cd some/directory; ./check status'

在 Java 上并阅读它给我的响应。有人可以告诉我我将如何去做吗?
正如您从命令中看到的那样,问题是我只需要执行一个命令,并且我使用私钥进入服务器而不使用任何密码或任何类似的东西。任何帮助将不胜感激,我正在努力解决这个问题。

4

3 回答 3

1

您可以使用运行时和进程:

Process cmdProc = Runtime.getRuntime().exec("ssh -o ...");

然后你可以处理输出:

BufferedReader outReader = new BufferedReader(
                              new InputStreamReader(cmdProc.getInputStream()));
String l;
while ((l= outReader.readLine()) != null) {
   // process standard output here
}
于 2013-07-16T13:37:54.987 回答
1

您可以使用Runtime该类并将命令拆分为多个部分,存储为String[]数组对象的元素。然后,将此数组作为Runtime#exec(String[] args)方法的参数传递,该方法将在单独的进程中自动执行指定的命令和参数。

public static void main(String[] args) throws IOException {
    Runtime rt = Runtime.getRuntime();
    String[] cmd = { "/bin/ssh", "-o", "..." };
    Process proc = rt.exec(cmd);
    BufferedReader is = 
          new BufferedReader(new InputStreamReader(proc.getInputStream()));
    String line;
    while ((line = is.readLine()) != null) {
        System.out.println(line);
    }
}
于 2013-07-16T13:40:04.180 回答
0

您可以使用 java ProcessBuilder 执行任何命令,包括 ssh 调用。

//java 7

Process p = new ProcessBuilder("ssh command here", "myArg").start();

这是来自 O racle Java 站点的有关流程构建器的更多信息

于 2013-07-16T13:43:31.680 回答