Executar Scripts Remotamente
Muitas vezes, em uma rede, laboratório ou em um cluster (ou até mesmo de um único computador para outro), é necessário rodar um script remotamente e temos de contornar a senha do SSH.
Com o presente artigo e os respectivos scripts, executaremos scripts remotamente.[ Hits: 130 ]
Por: Buckminster em 02/01/2026
executa-geral-chave.sh onde não tem a senha, pois configuramos o SSH para trabalhar com chave (é mais seguro).
$ usuario ALL=(ALL) NOPASSWD: ALL
executa-geral-chave.sh (ou dê o nome que quiser) com seu editor de texto preferido e coloque dentro (copie e cole o código ou faça o download do arquivo):
#!/bin/bash
# ============================================
# Executa outros scripts por SSH com chave
# Compatível com Debian | Fedora | RHEL | Arch
# e derivados
# ============================================
# Requisitos:
# Gere a chave SSH
# $ ssh-keygen -t ed25519
# Copie para os hosts/nós
# $ ssh-copy-id usuario@no01 e/ou ssh-copy-id usuario@192.160.1.100
# Teste:
# ssh usuario@no01 e/ou ssh usuario@192.168.1.100
# Não deve pedir senha
# Configure sudo sem senha no host/nó remoto, somente com chave
# $ sudo visudo -f /etc/sudoers.d/usuario
# Coloque dentro do arquivo
# usuario ALL=(ALL) NOPASSWD: ALL
# Defaults:usuario !requiretty
# Caminho do script local a ser executado remotamente (modifique aqui)
SCRIPT_PATH="$HOME/caminho_diretorio/scripts/script.sh"
# Verifica se o script existe
if [ ! -f "$SCRIPT_PATH" ]; then
echo "Script local não encontrado: $SCRIPT_PATH"
exit 1 # Encerra o script caso o arquivo não exista
fi
# Nome do script
SCRIPT="$(basename "$SCRIPT_PATH")"
DESTINO="/opt/scripts/$SCRIPT"
# Lista de hosts/nós (modifique conforme necessário)
# Para vários hosts/nós: ("no01" "no02" "no03" "no04" ...)
NODES=("no01")
# Loop sobre cada host/nó
for NODE in "${NODES[@]}"; do
echo ">>> Enviando $SCRIPT para $NODE..."
# Copia script para /tmp
# scp = secure copy (copia arquivos via SSH)
# -o BatchMode=yes = evita prompts de senha; falha se não houver autenticação por chave
scp -o BatchMode=yes "$SCRIPT_PATH" "$NODE:/tmp/" || {
echo "Falha ao copiar para $NODE"
continue # Pula para o próximo host/nó em caso de erro
}
# Cria o diretório, move e dá permissão
# ssh = conecta via SSH e executa comandos no host/nó remoto
# -o BatchMode=yes = impede que ssh peça senha; útil para scripts automatizados
ssh -t -o BatchMode=yes "$NODE" "
set -e # encerra o ssh se algum comando falhar
sudo mkdir -p /opt/scripts # cria diretório de destino se não existir
sudo mv /tmp/$SCRIPT $DESTINO # move o script para o destino final
sudo chmod +x $DESTINO # torna o script executável
# Validação do bash, altere para tuas necessidades
if [ ! -x /bin/bash ]; then
echo \"Erro: /bin/bash não encontrado ou não executável\"
exit 1
fi
# Executa o script remotamente com ou sem argumento adicional
# Caso quiser colocar argumento adicional, se souber o que está fazendo
# Senão deixe como está
if [ \"$SCRIPT\" == \"pvfs2-dist-keys.sh\" ]; then
sudo /bin/bash $DESTINO /opt/orangefs
else
sudo /bin/bash $DESTINO # executa o script remoto sem argumentos
fi
# === LIMPEZA ===
# Apaga o script da máquina remota após a execução (comente a linha abaixo, caso queira)
sudo rm -f $DESTINO
" || {
# Vermelho negrito: \033[31m
echo
echo -e "\033[1;31mERRO AO EXECUTAR NO HOST/NÓ $NODE!!!\033[0m"
continue # pula para o próximo host/nó em caso de erro
}
# Azul negrito: \033[1;34m
# Azul forte: \033[38;5;39m
echo
echo -e "\033[1;34mSCRIPT EXECUTADO COM SUCESSO EM $NODE!!!\033[0m"
echo
done
Compilando kernel no Debian Squeeze
Instalação do PAP (PostgreSL, Apache2 e PHP7) no Debian Jessie
Manual do IPtables - Comentários e sugestões de regras
Customizar a Instalação do Linux Debian com Preseed
Instalação do servidor Nagios 3 no Debian
Instalando o VMWare Server no Ubuntu 7.04 (e/ou similares)
Drivers de impressão para clientes com Windows 7/XP
Nenhum comentário foi encontrado.
librePods: liberte seus AirPods em 2026
Bluefin - A nova geração de ambientes de trabalho Linux
Instalando e definindo as novas fontes Adwaita no GNOME
Configurar aviso da temperatura da CPU no Conky
Pós-instalação do elementary OS 8.1
Quer auto-organizar janelas (tiling) no seu Linux? Veja como no Plasma 6 e no Gnome
Copiando caminho atual do terminal direto para o clipboard do teclado
Instalar Dual Boot, Linux+Windows. (11)
O WiFi não reconhece minha rede depois que o processo de suspensão é r... (3)









