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: 135 ]
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
Como agendar um backup automático do PostgreSQL no Cron evitando o problema de senha
Atualizar o macOS no Mac - Opencore Legacy Patcher
Instalação do PostgreSQL, Apache2 e PHP8 no Debian Buster 10 e no Stretch 9
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Encapsulando BIND 9 e Apache 2 para obter maior segurança
Servidor de Mídia com 128 MB de RAM
Configuração do modem ADSL Siemens Santis
Configuração de servidor DHCP no Debian Linux
Driver nVidia se sua placa tem chipset da SiS
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)









