gpt4 book ai didi

java - 使用 Java 通过 ssh 运行 bash 命令

转载 作者:行者123 更新时间:2023-11-30 03:59:57 25 4
gpt4 key购买 nike

我想从 java 运行一个带有 ssh 的脚本。该脚本采用一个数字作为参数。我启动此代码:

String myKey="/home/my_key.pem";
Runtime runtime = Runtime.getRuntime();

String commande = "ssh -i "
+myKey+" ubuntu@ec2-56-75-88-183.eu-west-1.compute.amazonaws.com './runScript.bash 8000'";
Process p = runtime.exec(commande);

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String line = reader.readLine();
while (line != null) {

System.out.println(line);
line = reader.readLine();
}

p.waitFor();

我收到此错误:

bash: ./runScript.bash 8000: No such file or directory

文件名正确。赋予 runScript.bash 的 chmod777

当我直接从 bash 运行命令行时,它可以工作。但从 IDE 来看,却不然。

我该如何正确运行此命令行?

最佳答案

错误清楚地表明:

bash: ./runScript.bash 8000: No such file or directory

这表明 shell 正在尝试调用名为 ./runScript.bash 8000 的脚本 - 脚本文件名中包含空格和 8000。

我很少告诉任何人少用引号,但是,这实际上是一个可以解决问题的案例。

最好完全避免双重评估:

Runtime.exec(new String[] {
"ssh",
"-i", myKey,
"ubuntu@ec2-56-75-88-183.eu-west-1.compute.amazonaws.com",
"./runScript 8000"
})

关于java - 使用 Java 通过 ssh 运行 bash 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22203957/

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