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 la ssh's
-t
opción y pase los comandos a ssh
. La -t
opción asigna un psuedo tty y permite la interacción del usuario con los comandos ejecutados ssh
, como ingresar una contraseña parasudo
$ ssh user@host -t 'sudo foo'
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 usa sudo
. Además, todas las variables en el sed
comando deben escaparse cuando se pasan a ssh
.
$ ssh user@host -t 'sudo sed -i "\$a text to insert" /path/to/file'
Para automatizar todo:
#!/bin/bash
SERVERS=( server1 server2 server3 )
for HOST in ${SERVERS[@]}; do
ssh user@${HOST} -t 'sudo sed -i "\$a text to insert" /path/to/file'
if [[ $? -ne 0 ]]; then
echo "ERROR: $HOST did not complete"
else
echo "$HOST complete"
fi
done
fabric.contrib.files.sed
método.