Me pregunto si hay una manera de ejecutar un script / comandos desde la máquina local sin hacer modificaciones como root en la máquina remota.
Algunos antecedentes
Estoy tratando de configurar algunas tareas a través de Capistrano y requiero sudo
acceso. Hay más de 30 servidores y para mí actualizar manualmente /etc/sudoers
será doloroso, así que me preguntaba si hay un método para actualizar este archivo de forma remota.
fabric.contrib.files.sed
método.Respuestas:
Puede ejecutar scripts locales de forma remota ejecutando
bash
en el sistema remoto y alimentando su script$ ssh user@host 'bash -s' < script.sh
Editar
Para ejecutar comandos que requieren el uso
sudo
en una máquina remota, use lassh's
-t
opción y pase los comandos assh
. La-t
opción asigna un psuedo tty y permite la interacción del usuario con los comandos ejecutadosssh
, como ingresar una contraseña parasudo
sed
Se recomienda modificar un archivo usando este método sobre una redirección>
porque la redirección de shell no permite escribir archivos cuando se usasudo
. Además, todas las variables en elsed
comando deben escaparse cuando se pasan assh
.Para automatizar todo:
fuente
/etc/sudoers
archivo debido a permisos de root, fallará.sudo
contraseña que, por lo que entiendo, está configurada/etc/sudoers
sudo
derechos en estas máquinas, entonces para modificar/etc/sudoers
tendrá que iniciar sesión a través de ssh comoroot
. Entonces el comando seríassh root@host -t 'sed -i "\$a text to insert" /path/to/file'
El
tee
comando me pareció útil para evitar la limitación de sudo en la redirección de archivos. El uso de sed resultó frustrante debido a los requisitos de escape de caracteres.Este es el comando que utilicé para agregar de forma remota los hosts de todas las máquinas de mi clúster a / etc / hosts:
El resultado para cada iteración se ve así:
Esta respuesta SU fue fundamental en la construcción de mi solución final: https://superuser.com/a/1026359/587485
fuente
Si necesita ejecutar múltiples comandos o redireccionamientos, debe usar la siguiente sintaxis:
fuente
Debería tener ya algún tipo de acceso a nivel raíz, ya sea a través de passwd de raíz directa o mediante la configuración de la regla de sudo de ID de usuario antes de intentar modificar el archivo sudoers.
fuente