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