sudo:ruby:在ssh之后找不到命令
我正在使用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月之后有一些更改
你得到的错误表明ruby
不在sudo $PATH
。 要解决这个问题,您需要正确导出环境:
sudo -E ruby
或者,只使用完整路径。 以普通用户身份运行type ruby
,并将其与sudo
一起使用。 例如:
$ type ruby ruby is /usr/bin/ruby $ sudo /usr/bin/ruby