Una delle particolarità di Linux è che si possono trovare strumenti davvero molto particolari, uno di questi che sicuramente non userete se non per particolari esempi che vedremo, è PSSH. Acronimo di Parallel SSH.
In realtà il pacchetto è un meta-pacchetto e nasconde altri strumenti che vedremo a breve. Nella pratica pssh crea appunto delle sessioni parallele di ssh, e quando impartiremo un comando esso verrà propagato, in parallelo per l’appunto, a tutte le sessioni.
A cosa può servire? immaginiamo di voler cambiare la password di un utente che è presente in un certo numero di server linux, oppure di applicare una patch di sicurezza, o effettuare una modifica ad una configurazione. Anziché andare server per server con questo strumento si risparmia davvero moltissimo tempo.
Chiaramente le situazioni in cui andiamo ad operare devono essere identiche. Il pacchetto non fa parte del sistema di base, ma va installato attraverso il vostro repository, per Ubuntu vale il canonico apt install pssh.
Una volta caricato abbiamo due strade di utilizzo, una diciamo più manuale e una più semplificata. Partiamo con la manuale, un esempio è la connessione:
pssh -i -H utente@server1 utente@server2
L’opzione -i indica di mostrare i risultati per ogni host, mentre -H indica gli host elencati di seguito. Se abbiamo l’autenticazione attraverso chiave RSA (sempre consigliato per i server Linux) non avremo l’annoso scoglio della password, viceversa ci tocca mettere la password per ognuno dei server richiesti.
La versione più automatica prevede che gli host possono essere memorizzati in un file di configurazione, che poi passeremo a pssh. Nel file, in semplice testo, possiamo direttamente indicare per ogni riga il nomeutente@server. Supponendo che il file si chiami parallel-server.txt daremo il comando:
pssh -i -h /path/parallel-server.txt
Faccio notare la h minuscola rispetto al comando “manuale”. E’ possibile anche indicare direttamente il comando nella medesima riga, ad esempio:
pssh -i -h /path/parallel-server.txt apt update && apt upgrade
Se poi l’utente che stiamo utilizzando è il classico user di primo livello e il comando necessita di elevazione a Sudo, è stato ovviamente previsto anche questo:
pssh -i -h /path/parallel-server.txt -A -l root apt update && apt upgrade
Anche in questo caso per evitare di immettere le password consiglio l’articolo su come dare i privilegi di sudo.
Nella parte inziale ho fatto cenno che questo è un meta pacchetto, ovvero contiene altri software, ed infatti oltre a pssh abbiamo anche:
- Parallel scp (comando: parallel-scp o pscp), per copiare files in remoto
- Parallel rsync (comando: parallel-rsync o prsync), per sincronizzare copie parallele
- Parallel nuke (comando: parallel-nuke o pnuke), per “uccidere” processi in parallelo
- Parallel slurp (comando: parallel-slurp o pslurp), per copiare files dai sistemi remoti
chiaramente questi rispetto a pssh, sono decisamente “minori” e già di per sè pssh non è che possa godere di chissà quale utilizzo, tuttavia è utile sapere che esistono questi strumenti.
Roberto
Per lavorare in parallelo su piu’ server e’ meglio usare tools come Ansible!
Walter Tosolini
Personalmente non mi piace molto ansible, ma lo scopo dell’articolo non era quello. Si voleva far capire che in linux si possono trovare tool particolari per esigenze che si useranno si e no un paio di volte. Mettersi ad installare Ansible come altri competitor del settore ha senso solo se poi vengono usati in modo strutturale. Non una volta o due.