Pular para o conteúdo

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.
Buckminster Buckminster
Hits: 2.218 Categoria: Linux Subcategoria: Configuração
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Parte 2: Seção do Script com Senha (OPÇÃO COM SENHA SSH)

Crie o script:

$ sudo vim $HOME/caminho_diretorio/scripts/executa-geral-senha.sh

Usei o vim, use teu editor preferido e adapte o caminho para salvar o script de acordo com as tuas necessidades.

Coloque dentro (copie e cole o código ou faça o download do arquivo):

#!/bin/bash

# ============================================
# Executa outros scripts por SSH com senha
# Compatível com Debian | Fedora | RHEL | Arch
# e derivados
# ============================================

# 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

# Extrai o nome do script do caminho
SCRIPT="$(basename "$SCRIPT_PATH")"
DESTINO="/opt/scripts/$SCRIPT"

# Senha sudo (texto plano - cuidado em ambientes sensíveis)
SENHA="senha"

# 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 o script para /tmp
    scp "$SCRIPT_PATH" "$NODE:/tmp/" || {
        echo -e "\033[1;31mFalha ao copiar para $NODE!\033[0m"
        continue
    }

    # Move para /opt com sudo, torna executável
    ssh "$NODE" "echo \"$SENHA\" | sudo -S mkdir -p /opt/scripts && sudo mv /tmp/$SCRIPT $DESTINO && sudo chmod +x $DESTINO; echo"

    # Executa o script remotamente com ou sem argumento adicional
    # Caso quiser colocar argumentos adicionais, se souber o que está fazendo
    # Senão deixe como está
	if [ "$SCRIPT" == "pvfs2-dist-keys.sh" ]; then
    		ssh "$NODE" "echo \"$SENHA\" | sudo -S bash $DESTINO /opt/orangefs; echo"
	elif [ "$SCRIPT" == "copia-chave-visudo.sh" ]; then
    		scp ~/.ssh/id_ed25519.pub "$NODE:/tmp/id_ed25519.pub"
    		ssh "$NODE" "echo \"$SENHA\" | sudo -S bash $DESTINO /tmp/id_ed25519.pub"
	else
    		ssh "$NODE" "echo \"$SENHA\" | sudo -S bash $DESTINO"
	fi

    if [ $? -eq 0 ]; then
    # Azul negrito: \033[1;34m
    # Azul forte: \033[38;5;39m
    echo
    echo -e "\033[1;34mSCRIPT EXECUTADO COM SUCESSO EM $NODE!!!\033[0m"
	else
    # Vermelho negrito: \033[1;31m
    echo
    echo -e "\033[1;31mERRO AO EXECUTAR SCRIPT EM $NODE!!!\033[0m"
    continue
fi
    echo
	# === LIMPEZA ===
	# Apaga o script da máquina remota (comente a linha abaixo, caso queira)
	sudo rm -rf /opt/scripts/$SCRIPT
done

Salve e saia.

Dê permissão de execução:

$ sudo chmod +x executa-geral-senha.sh
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Para executar no servidor:

$ ./executa-geral-senha.sh

Ou, se for o caso:

$ sudo ./executa-geral-senha.sh

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
   1. Introdução
   2. Seção do Script com Senha (OPÇÃO COM SENHA SSH)
   3. Seção do Script com Chave ( OPÇÃO COM CHAVE SSH)
   4. Como Utilizar
   5. Bônus

Manual do IPtables - Comentários e sugestões de regras

Instalar e Configurar a santíssima trindade (PAP) no Void Linux

Atualizar o macOS no Mac - Opencore Legacy Patcher

Instalação e Configuração do Void com Cinnamon

Instalar/habilitar o Linux nativo dentro do Windows com WSL (Windows Subsystem for Linux - Subsistema do Windows para Linux)

WiiMote no Linux com WMinput e WMgui

Passo-a-passo: Instalação de uma placa Wireless

Alta disponibilidade com SuSE 10 Enterprise Server SP2

Xen com multi bridge e LVM

Lubuntu, um Ubuntu mais Leve!

#1 Comentário enviado por patrickernandes em 05/01/2026 - 14:31h
é um excelente trabalho!
mas acredito que para fins mais profissionais, a utilização de ansible seria mais tranquilo..
sucesso!!

---
Linux para suporte: http://sino.ernandes.info
#2 Comentário enviado por Buckminster em 16/01/2026 - 21:03h

[1] Comentário enviado por patrickernandes em 05/01/2026 - 14:31h

é um excelente trabalho!
mas acredito que para fins mais profissionais, a utilização de ansible seria mais tranquilo..
sucesso!!

---
Linux para suporte: http://sino.ernandes.info


Entendo teu ponto de vista, mas para o que eu pretendo o Ansible não satisfaz no momento.
Sucesso!

Contribuir com comentário

Entre na sua conta para comentar.