簡體   English   中英

無法通過SSH將ruby腳本運行到ec2實例中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM