【问题标题】:Run ssh commande by java to launch script in ec2 instance通过 java 运行 ssh 命令以在 ec2 实例中启动脚本
【发布时间】:2014-04-06 04:28:45
【问题描述】:

我在亚马逊机器上有一个脚本,我会使用 netbeans 的 ssh 运行这个脚本。 我用这个代码:

String myKey="/home/local/my_key.pem";
Runtime runtime = Runtime.getRuntime();
String commande = "ssh -i "+myKey+" ubuntu@ec2-53-71-22-288.eu-west-1.compute.amazonaws.com 'bash runFile.bash' -o StrictHostKeyChecking=no ";

Process p = runtime.exec(commande);
p.waitFor();

但它不起作用。当我打印p.getErrorStream() 时,我得到:

bash: writeFile.bash: command not found

当我从bash 运行commande 时,它可以工作,但在netbeans 中不行!

有人可以解释一下为什么吗?请问其他解决方案?

谢谢

【问题讨论】:

  • 你得到了什么?错误信息?你能把它添加到问题中吗?
  • 没有错误,只是命令行没有做出应该做的事!
  • 返回什么?你也可以阅读pgetOutputStream()getErrorStream()看看你能不能看出问题可能是什么
  • 还有...有~/local/my_key.pem吗?
  • 什么是writeFile.bash?它是您要执行的文件吗?它应该在哪里?它是可执行的吗?尝试执行./writeFile.bash

标签: java bash ssh amazon-ec2


【解决方案1】:

试试这个:

String myKey="/home/local/my_key.pem";
Runtime runtime = Runtime.getRuntime();
String commande = "ssh -i "+myKey+" ubuntu@ec2-53-71-22-288.eu-west-1.compute.amazonaws.com 'bash ./runFile.bash' -o StrictHostKeyChecking=no ";

Process p = runtime.exec(commande);
p.waitFor();

(使用bash ./runFile.bash 代替bash runFile.bash

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    相关资源
    最近更新 更多