Gostaria de saber se existe uma maneira de executar um script / comandos da máquina local sem fazer nenhuma modificação como root na máquina remota?
Alguma experiência
Estou tentando configurar algumas tarefas via Capistrano e preciso de sudo
acesso. Existem cerca de 30 servidores ou mais, e eu atualizar manualmente /etc/sudoers
será doloroso, então eu queria saber se existe um método para atualizar esse arquivo remotamente?
fabric.contrib.files.sed
métodoRespostas:
Você pode executar scripts locais remotamente executando
bash
no sistema remoto e alimentando-o com seu script$ ssh user@host 'bash -s' < script.sh
Editar
Para executar comandos que exigem o uso
sudo
em uma máquina remota, use assh's
-t
opção e passe os comandos parassh
. A-t
opção aloca um psuedo tty e permite a interação do usuário com os comandos executadosssh
, como digitar uma senha parasudo
Para modificar um arquivo usando esse método,
sed
é recomendado um redirecionamento,>
porque o redirecionamento do shell não permite gravar arquivos durante o usosudo
. Além disso, todas as variáveis nosed
comando precisam ser escapadas quando são passadas parassh
.Para automatizar a coisa toda:
fonte
/etc/sudoers
arquivo devido às permissões de root, ele falhará.sudo
senha, que pelo que entendi é fixado em/etc/sudoers
sudo
direitos sobre essas máquinas, para modificar,/etc/sudoers
você precisará fazer login via ssh asroot
. Então o comando seriassh root@host -t 'sed -i "\$a text to insert" /path/to/file'
Eu achei o
tee
comando útil para evitar a limitação do sudo no redirecionamento de arquivos. Usar sed provou ser frustrante devido a requisitos de escape de caracteres.Este é o comando que eu usei para anexar remotamente os hosts de todas as máquinas do meu cluster ao / etc / hosts:
A saída para cada iteração é assim:
Esta resposta SU foi fundamental na criação da minha solução final: https://superuser.com/a/1026359/587485
fonte
Se você precisar executar vários comandos ou redirecionamentos, use a seguinte sintaxe:
fonte
Você já teria que ter algum tipo de acesso no nível da raiz, através da senha direta da raiz ou da configuração da regra sudo da sua ID de usuário antes de tentar modificar o arquivo sudoers.
fonte