我想执行
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=dev/null -i key.txt user@host 'cd some/directory; ./check status'
在 Java 上并阅读它给我的响应。有人可以告诉我我将如何去做吗?
正如您从命令中看到的那样,问题是我只需要执行一个命令,并且我使用私钥进入服务器而不使用任何密码或任何类似的东西。任何帮助将不胜感激,我正在努力解决这个问题。
我想执行
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=dev/null -i key.txt user@host 'cd some/directory; ./check status'
在 Java 上并阅读它给我的响应。有人可以告诉我我将如何去做吗?
正如您从命令中看到的那样,问题是我只需要执行一个命令,并且我使用私钥进入服务器而不使用任何密码或任何类似的东西。任何帮助将不胜感激,我正在努力解决这个问题。
您可以使用运行时和进程:
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
}
您可以使用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);
}
}
您可以使用 java ProcessBuilder 执行任何命令,包括 ssh 调用。
//java 7
Process p = new ProcessBuilder("ssh command here", "myArg").start();
这是来自 O racle Java 站点的有关流程构建器的更多信息