Tempo fa abbiamo pubblicato una guida per "copiare un file in più directory nella riga di comando su Linux" . In quell'articolo, ti abbiamo insegnato vari metodi per copiare un singolo file in più directory contemporaneamente. Oggi vedremo come eseguire un singolo comando su più sistemi remoti contemporaneamente in sistemi operativi simili a Unix. Come già sai, possiamo accedere e comunicare con il sistema remoto usando ssh. openSSH ci consente di eseguire tutti i tipi di attività di amministrazione in un sistema remoto. Una limitazione con openSSH è che non possiamo eseguire il singolo comando su più sistemi remoti contemporaneamente. Nessun problema. Ecco dove PSSH viene a colmare questa lacuna.
Scarica - Guida gratuita:"Guida alla programmazione del modulo del kernel Linux"PSSH o P arallel SSH , è una suite a riga di comando che ti aiuta a ssh in parallelo su un certo numero di host. La suite PSSH comprende i seguenti comandi:
- pssh - SSH a più sistemi remoti in parallelo,
- pscp - Copia i file in parallelo su un certo numero di host,
- sincronizzazione : copia i file in parallelo su un certo numero di host,
- pnuke : Chiudi processi in parallelo su più host,
- slurp :copia i file in parallelo da più host.
In questo tutorial vedremo come eseguire un singolo comando su più host contemporaneamente utilizzando PSSH.
Installa PSSH
Possiamo facilmente installare PSSH utilizzando PIP , un gestore di pacchetti Python.
Per installare PIP su Arch Linux e suoi derivati, eseguire:
$ sudo pacman -S python-pip
Su RHEL, Fedora, CentOS:
$ sudo yum install epel-release
$ sudo yum install python-pip
Oppure,
$ sudo dnf install epel-release
$ sudo dnf install python-pip
Su Debian, Ubuntu, Linux Mint:
$ sudo apt-get install python-pip
Per maggiori dettagli sulla gestione dei pacchetti Python tramite PIP, fare riferimento al seguente collegamento.
- Come gestire i pacchetti Python utilizzando Pip
Una volta installato PIP, eseguire il comando seguente per installare PSSH.
$ sudo pip install pssh
PSSH è stato installato! Andiamo avanti e vediamo come usarlo.
Esegui un comando singolo su più sistemi remoti contemporaneamente utilizzando PSSH
Importante: Per utilizzare PSSH (solo ai fini di questo tutorial), tutti i tuoi sistemi remoti devono avere un nome utente comune con la stessa password . Altrimenti, questo metodo non aiuterà. Supponiamo, ad esempio, di aver già creato un utente chiamato sk con password otechnix su tutti i miei host remoti. Dovresti avere lo stesso utente con la stessa password anche su tutti i tuoi sistemi remoti.
Ora, vediamo come eseguire un singolo comando su più host remoti utilizzando PSSH. Vai al tuo sistema locale in cui desideri eseguire il comando e crea un file di testo chiamato remotehosts.txt . Puoi nominarlo come desideri.
$ vi remotehosts.txt
Aggiungi gli indirizzi IP dei tuoi host remoti con i numeri di porta uno per uno come esattamente mostrato di seguito.
192.168.1.103:22 192.168.1.104:22
Dove, 192.168.1.103 e 192.168.1.104 sono gli indirizzi IP dei miei sistemi remoti. 22 è il numero della porta ssh. Devi menzionare il numero di porta corretto se l'hai già cambiato. Inoltre, assicurati di poter accedere a tutti gli host remoti dal tuo sistema locale tramite ssh.
Ora, controlliamo il tempo di attività di entrambi gli host remoti dal nostro sistema locale. Per farlo, esegui:
$ pssh -h remotehosts.txt -l sk -A -i "uptime"
Ecco,
- remotehosts.txt - Contiene gli indirizzi IP di entrambi i sistemi remoti.
- sk - il nome utente di entrambi i sistemi remoti
Immettere la password dell'utente "sk" .
Risultato di esempio:
Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: [1] 20:51:15 [SUCCESS] 192.168.1.103:22 20:50:50 up 8 min, 1 user, load average: 0.05, 0.11, 0.10 [2] 20:51:15 [SUCCESS] 192.168.1.104:22 20:50:52 up 12 min, 1 user, load average: 0.00, 0.07, 0.12
Come vedi sopra, abbiamo eseguito il comando "uptime" su due host remoti e ottenuto il risultato in una volta sola.
E la versione del kernel? Per verificare la versione installata di entrambi gli host remoti, eseguire:
$ pssh -h remotehosts.txt -l sk -A -i "uname -r"
Risultato di esempio:
Warning: do not enter your password if anyone else has superuser privileges or access to your account. Password: [1] 20:53:09 [SUCCESS] 192.168.1.103:22 3.10.0-327.22.2.el7.x86_64 [2] 20:53:09 [SUCCESS] 192.168.1.104:22 4.4.0-21-generic
Molto bello, vero? Possiamo creare una directory su entrambi gli host remoti contemporaneamente? Sì, naturalmente! Per farlo, esegui il seguente comando:
$ pssh -h remotehosts.txt -l sk -A -i "mkdir dir1"
Allo stesso modo, puoi fare qualsiasi cosa tu voglia fare su più host remoti dal tuo sistema locale usando PSSH.
Importante: Si prega di prestare molta attenzione durante l'utilizzo di PSSH. Un comando errato verrà eseguito contemporaneamente su più host e danneggerà tutti gli host. Quindi, fai molta attenzione mentre usi questo metodo nella produzione. Ti suggerisco di testarlo in una macchina virtuale. Una volta che avrai acquisito familiarità con PSSH, potrai utilizzarlo in produzione, se lo desideri.
Lettura consigliata:
- DSH:esegui un comando Linux su più host alla volta
- Esegui comandi su sistemi Linux remoti tramite SSH
Spero che questo aiuti.