Estou trabalhando com instâncias ec2 e estava tentando executar um script ruby em outra instância após ssh para essa instância.
Eu tenho um script ruby que atualiza os arquivos de configuração, então eu preciso rodar esse script como superusuário. Quando eu executo o script manualmente nessa instância, sudo ruby recreate-532d01c.rb
, o erro que vem é
sudo: ruby: command not found
A execução de scripts simples sem permissões de root funciona, por exemplo, ruby file_1.rb
.
Usar rvmsudo no lugar de sudo executa o script com aviso,
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.
Eu tentei executar o comando abaixo do console rails de uma das instâncias para teste e ele não reconhece o ruby como comando
1.9.3-p545 :002 > system("ssh -i /home/ubuntu/.ssh/own_key.pem ubuntu@**.***.***.** ruby execute-52d.rb")
bash: ruby: command not found
Eu tentei com possíveis soluções na web, mas não consegui resolver o problema. Eu tenho a mesma configuração em execução para uma das minhas antigas aws acount, esta é uma conta recém-criada. Não tenho certeza se isso poderia ser problema de qualquer forma, pois atualmente as instâncias ec2 se enquadram no vpc por padrão e têm algumas alterações após dezembro de 2013