Você pode executar scripts locais remotamente executando bashno sistema remoto e alimentando-o com seu script
$ ssh user@host 'bash -s' < script.sh
Editar
Para executar comandos que exigem o uso sudoem uma máquina remota, use a ssh's -topção e passe os comandos para ssh. A -topção aloca um psuedo tty e permite a interação do usuário com os comandos executados ssh, como digitar uma senha parasudo
$ ssh user@host -t 'sudo foo'
Para modificar um arquivo usando esse método, sedé recomendado um redirecionamento, >porque o redirecionamento do shell não permite gravar arquivos durante o uso sudo. Além disso, todas as variáveis no sedcomando precisam ser escapadas quando são passadas para ssh.
$ ssh user@host -t 'sudo sed -i "\$a text to insert" /path/to/file'
Para automatizar a coisa toda:
#!/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