我想用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的chmod
为777
。
当我直接从bash运行命令行时,它可以工作。但是从IDE来看,它没有。
如何才能正确运行此命令行?
答案 0 :(得分:2)
错误表明:
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"
})