Я работаю с ec2 экземплярами и пытался выполнить рубиновый сценарий на другом экземпляре после ssh к тому экземпляру. У меня есть рубиновый сценарий, который обновляет конфигурационные файлы, таким образом, я должен запустить тот скрипт как суперпользователь. когда я запускаю скрипт вручную на том экземпляре, sudo ruby recreate-532d01c.rb
, ошибка, которая прибывает,
sudo: ruby: command not found
Запущение простых скриптов без корневых работ полномочий, например.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.
Я пытался выполниться ниже команды от консоли направляющих одного из экземпляра для тестирования, и этому не удается распознать рубин как команду
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
Ошибка, которую Вы получаете, указывает, что ruby
не находится в sudo $PATH
. ДЛЯ обхождения этого любой необходимо экспортировать среду правильно:
sudo -E ruby
Или, просто используйте полный путь. Выполненный type ruby
как Ваш обычный пользователь и использование это с sudo
. Например:
$ type ruby
ruby is /usr/bin/ruby
$ sudo /usr/bin/ruby