Ricerca nel sito web

Come eseguire più comandi su più server Linux


Se gestisci più server Linux e desideri eseguire più comandi su tutti i server Linux, ma non hai idea di come farlo. Non devi preoccuparti, in questa semplice guida alla gestione del server ti mostreremo come eseguire più comandi su più server Linux contemporaneamente.

Per raggiungere questo obiettivo è possibile utilizzare il programma pssh (parallel ssh), un'utilità della riga di comando per eseguire ssh in parallelo su un numero di host. Con esso, puoi inviare input a tutti i processi ssh, da uno script di shell.

Requisiti

  1. Installa Pssh per eseguire comandi su più server Linux remoti
  2. È necessario utilizzare l'autenticazione senza password SSH per tutti i server remoti.

Crea uno script di shell

Pertanto, devi iniziare preparando uno script che contenga i comandi Linux che desideri eseguire sui diversi server. In questo esempio, scriveremo uno script che raccoglierà le seguenti informazioni da più server:

  • Controlla il tempo di attività dei server
  • Controlla chi è connesso e cosa sta facendo
  • Elenca i primi 5 processi in esecuzione in base all'utilizzo della memoria.

Per prima cosa crea uno script chiamato commands.sh con il tuo editor preferito.

vi commands.sh

Successivamente, aggiungi i seguenti comandi allo script come mostrato.

#!/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

Salva il file e chiudilo. Quindi rendi eseguibile lo script come mostrato.

chmod +x commands.sh

Crea il file host PSSH

Successivamente, aggiungi l'elenco dei server su cui desideri eseguire i comandi, in un file hosts.txt, nel formato [utente@]host[:porta] o fornire semplicemente gli indirizzi IP del server.

Ma ti suggeriamo di utilizzare alias ssh che possono essere specificati nel file .ssh/config come spiegato in come configurare connessioni ssh personalizzate per semplificare l'accesso remoto.

Questo metodo è più efficiente e affidabile, consente di specificare le opzioni di configurazione (come nome host, identificazione file, porta, nome utente ecc.) per ciascun server remoto.

Di seguito è riportato il nostro file di alias host ssh di esempio, ovvero un file di configurazione ssh specifico dell'utente.

vi ~/.ssh/config

Successivamente, crea un file hosts.txt, qui puoi semplicemente specificare gli alias (nomi definiti utilizzando la parola chiave Host nel file .ssh/config) come mostrato.

vi hosts.txt 

Aggiungi gli alias del server.

server1
server2
server3

Esegui comandi tramite uno script su più server Linux

Ora esegui il seguente comando pssh specificando il file hosts.txt insieme allo script che contiene più comandi da eseguire su più server remoti.

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

Significato dei flag utilizzati nel comando precedente:

  • -h – legge il file host.
  • -P – dice a pssh di visualizzare l'output non appena arriva.
  • -I – legge l'input e lo invia a ciascun processo ssh.

Questo è tutto! In questo articolo, abbiamo mostrato come eseguire più comandi su più server in Linux. Puoi condividere qualsiasi pensiero relativo a questo argomento tramite la sezione commenti qui sotto.