Я работаю с экземплярами ec2 и пытался выполнить ruby-скрипт в другом экземпляре после ssh для этого экземпляра. У меня есть рубиновый скрипт, который обновляет файлы конфигурации, поэтому мне нужно запустить этот скрипт как суперпользователь. когда я запускаю скрипт вручную в этом экземпляре, 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 acount, это вновь созданная учетная запись. Не уверен, что это может быть проблемой, так как в настоящее время экземпляры ec2 попадают под vpc по умолчанию и имеют некоторые изменения после dec 2013