Puede ejecutar scripts locales de forma remota ejecutando bashen el sistema remoto y alimentando su script
$ ssh user@host 'bash -s' < script.sh
Editar
Para ejecutar comandos que requieren el uso sudoen una máquina remota, use la ssh's -topción y pase los comandos a ssh. La -topció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'
sedSe 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 sedcomando 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.sedmétodo.