Pesquisa de site

Como executar vários comandos em vários servidores Linux


Se você gerencia vários servidores Linux e deseja executar vários comandos em todos os servidores Linux, mas não tem ideia de como fazer isso. Não há necessidade de se preocupar, neste guia simples de gerenciamento de servidor, mostraremos como executar vários comandos em vários servidores Linux simultaneamente.

Para conseguir isso, você pode usar o programa pssh (ssh paralelo), um utilitário de linha de comando para executar ssh em paralelo em vários hosts. Com ele, você pode enviar entradas para todos os processos ssh, a partir de um script shell.

Requisitos

  1. Instale o Pssh para executar comandos em vários servidores Linux remotos
  2. Você deve usar autenticação SSH sem senha para todos os servidores remotos.

Crie um script de shell

Portanto, você precisa começar preparando um script que contenha os comandos Linux que deseja executar nos diferentes servidores. Neste exemplo, escreveremos um script que coletará as seguintes informações de vários servidores:

  • Verifique o tempo de atividade dos servidores
  • Verifique quem está conectado e o que está fazendo
  • Liste os 5 principais processos em execução de acordo com o uso de memória.

Primeiro crie um script chamado commands.sh com seu editor favorito.

vi commands.sh

Em seguida, adicione os seguintes comandos ao script conforme mostrado.

#!/bin/bash 
###############################################################################
#Script Name    : commands.sh                       
#Description    : execute multiple commands on multiple servers                                                                     
#Author         : Aaron Kili Kisinga       
#Email          : [email  
################################################################################
echo
show system uptime
uptime
echo
show who is logged on and what they are doing
who
echo
show top 5 processe by RAM usage 
ps -eo cmd,pid,ppid,%mem,%cpu --sort=-%mem | head -n 6

exit 0

Salve o arquivo e feche-o. Em seguida, torne o script executável conforme mostrado.

chmod +x commands.sh

Criar arquivo de hosts PSSH

Em seguida, adicione a lista de servidores nos quais deseja executar os comandos, em um arquivo hosts.txt, no formato [user@]host[:port] ou simplesmente forneça os endereços IP do servidor.

Mas sugerimos que você use aliases ssh que podem ser especificados no arquivo .ssh/config conforme explicado em como configurar conexões ssh personalizadas para simplificar o acesso remoto.

Este método é mais eficiente e confiável, pois permite especificar opções de configuração (como nome do host, arquivo de identificação, porta, nome de usuário etc.) para cada servidor remoto.

A seguir está nosso exemplo de arquivo de aliases de hosts ssh, também conhecido como arquivo de configuração ssh específico do usuário.

vi ~/.ssh/config

Em seguida, crie um arquivo hosts.txt, aqui você pode simplesmente especificar os aliases (nomes definidos usando a palavra-chave Host no arquivo .ssh/config) conforme mostrado.

vi hosts.txt 

Adicione os aliases do servidor.

server1
server2
server3

Execute comandos por meio de um script em vários servidores Linux

Agora execute o seguinte comando pssh especificando o arquivo hosts.txt junto com o script que contém vários comandos para execução em vários servidores remotos.

pssh -h hosts.txt -P -I<./commands.sh

Significado dos sinalizadores usados no comando acima:

  • -h – lê o arquivo hosts.
  • -P – diz ao pssh para exibir a saída assim que ela chegar.
  • -I – lê a entrada e envia para cada processo ssh.

É isso! Neste artigo, mostramos como executar vários comandos em vários servidores no Linux. Você pode compartilhar quaisquer idéias relacionadas a este tópico por meio da seção de comentários abaixo.