[英]Unable to run ruby script over ssh into ec2 instance
我正在使用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
我嘗試了通過Web的可能解決方案,但無法解決問題。 我為一個舊的aws帳戶運行了相同的配置,這是一個新創建的帳戶。 不知道這是否可能以任何方式出現問題,因為當前ec2實例默認情況下屬於vpc並在2013年12月之后有一些更改
與您的VPC無關。 因此,當使用sudo
運行ruby腳本時,不會為user
設置user
使用的環境。
聽起來您可能正在使用rvm,並且可能已使用“單用戶”配置對其進行了設置。
嘗試以您的user
身份運行:
which ruby
並查看ruby可執行文件所在的位置。 那就是您必須確保以sudo運行腳本時它在PATH中可用的方法。
最壞的情況是,您必須使用多用戶配置重新安裝rvm,當使用sudo
運行時,它應該可以工作:
user$ \curl -sSL https://get.rvm.io | sudo bash -s stable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.