Cum să rulați mai multe comenzi pe mai multe servere Linux


Dacă gestionați mai multe servere Linux și doriți să rulați mai multe comenzi pe toate serverele Linux, dar nu aveți idee despre cum să faceți acest lucru. Nu este nevoie să vă faceți griji, în acest ghid simplu de gestionare a serverelor, vă vom arăta cum să rulați mai multe comenzi pe mai multe servere Linux simultan.

Pentru a realiza acest lucru, puteți utiliza programul pssh (parallel ssh), un utilitar de linie de comandă pentru executarea ssh în paralel pe un număr de gazde. Cu acesta, puteți trimite intrare la toate procesele ssh, dintr-un script shell.

Cerințe

  1. Instalați Pssh pentru a rula comenzi pe mai multe servere Linux la distanță
  2. Trebuie să utilizați autentificarea SSH fără parolă pentru toate serverele de la distanță.

Creați un script Shell

Prin urmare, trebuie să începeți prin a pregăti un script care conține comenzile Linux pe care doriți să le executați pe diferite servere. În acest exemplu, vom scrie un script care va colecta următoarele informații de la mai multe servere:

  • Verificați timpul de funcționare al serverelor
  • Verificați cine este conectat și ce fac
  • Listați primele 5 procese care rulează în funcție de utilizarea memoriei.

Mai întâi creați un script numit commands.sh cu editorul dvs. preferat.

vi commands.sh

Apoi, adăugați următoarele comenzi la script, așa cum se arată.

#!/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ți fișierul și închideți-l. Apoi faceți scriptul executabil așa cum se arată.

chmod +x commands.sh

Creați fișierul gazde PSSH

Apoi, adăugați lista de servere pe care doriți să rulați comenzile, într-un fișier hosts.txt, în formatul [user@]host[:port] sau pur și simplu dați adrese IP serverului.

Dar vă sugerăm să utilizați aliasuri ssh care pot fi specificate în fișierul .ssh/config, așa cum este explicat în modul de configurare a conexiunilor ssh personalizate pentru a simplifica accesul de la distanță.

Această metodă este mai eficientă și mai fiabilă, vă permite să specificați opțiuni de configurare (cum ar fi numele gazdei, fișierul de identificare, portul, numele de utilizator etc..) pentru fiecare server la distanță.

Următorul este exemplul nostru de fișier de alias ssh hosts a.k.a fișier de configurare ssh specific utilizatorului.

vi ~/.ssh/config

Apoi, creați un fișier hosts.txt, aici puteți specifica pur și simplu aliasurile (nume definite folosind cuvântul cheie Gazdă în fișierul .ssh/config), așa cum se arată.

vi hosts.txt 

Adăugați aliasurile serverului.

server1
server2
server3

Rulați comenzi printr-un script pe mai multe servere Linux

Acum rulați următoarea comandă pssh specificând fișierul hosts.txt împreună cu scriptul care conține mai multe comenzi pentru a rula pe mai multe servere la distanță.

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

Semnificația steagurilor utilizate în comanda de mai sus:

  • -h – citește fișierul hosts.
  • -P – îi spune pssh să afișeze rezultatul pe măsură ce sosește.
  • -I – citește intrarea și trimite către fiecare proces ssh.

Asta este! În acest articol, am arătat cum să executați mai multe comenzi pe mai multe servere în Linux. Puteți împărtăși orice gânduri legate de acest subiect prin secțiunea de comentarii de mai jos.