无法通过ssh将ruby脚本运行到ec2实例中

时间:2014-04-13 19:06:21

标签: ruby-on-rails ruby ssh amazon-ec2 ubuntu-12.04

我正在使用ec2实例,并尝试在ssh之后在另一个实例上执行ruby脚本到该实例。 我有一个更新配置文件的ruby脚本,所以我需要以超级用户身份运行该脚本。当我在该实例sudo ruby recreate-532d01c.rb上手动运行脚本时,出现的错误是

sudo: ruby: command not found

运行没有root权限的简单脚​​本,例如。ruby file_1.rb

使用rvmsudo代替sudo执行带有警告的脚本,

ubuntu@ip-10-0-0-111:~$ rvmsudo ruby recreate-82bb000012.rb 
Warning: can not check `/etc/sudoers` for `secure_path`, falling back to call via `/usr/bin/env`, this breaks rules from `/etc/sudoers`. Run:

    export rvmsudo_secure_path=1

to avoid the warning, put it in shell initialization file to make it persistent.

In case there is no `secure_path` in `/etc/sudoers`. Run:

    export rvmsudo_secure_path=0

to avoid the warning, put it in shell initialization file to make it persistent.

我尝试从其中一个实例的rails控制台执行以下命令进行测试,但无法将ruby识别为命令

1.9.3-p545 :002 > system("ssh -i /home/ubuntu/.ssh/own_key.pem ubuntu@**.***.***.** ruby execute-52d.rb")
bash: ruby: command not found

我在网上尝试了可能的解决方案,但无法解决问题。我为我的一个旧aws帐户运行相同的配置,这是一个新创建的帐户。不确定这是否会以任何方式出现问题,因为目前ec2实例默认属于vpc并且在2013年12月之后有一些变化

1 个答案:

答案 0 :(得分:0)

与您的VPC无关。因此,当您使用sudo运行ruby脚本时,user正在使用的环境不会为Ruby设置。

听起来您可能正在使用rvm而且您可能使用“单个用户”进行设置。配置。

尝试以user

运行
which ruby

并查看ruby可执行文件所在的位置。这就是你必须确保当你将你的脚本作为sudo运行时它在PATH中可用。

最糟糕的情况是,您必须使用多用户配置重新安装rvm,这在您使用sudo运行时应该有效:

user$ \curl -sSL https://get.rvm.io | sudo bash -s stable