Parallel-ssh

Ukoliko administrirate nekoliko poslužitelja, a za sistem-inženjera nije nemoguće da brine o nekoliko desetaka, pa i stotina poslužitelja, jasno je da s brojem poslužitelja klasičan način administracije neće biti optimalan. Postoje sustavi replikacije konfiguracijskih datoteka, kloniranja korisnika i slično, koji mogu pomoći u ovakvim situacijama. No, za manji broj poslužitelja bit će dovoljan dodatak za ssh koji paralelizira administrativne operacije. Poznat je kao "pssh", ili na Debianu i Ubuntuu "parallel-ssh" (paket se zove pssh, ali su naredbe preimenovane zbog konflikta s paketom putty).

Prije nego počnemo, ono što valja naglasiti je: ništa vam od ovoga što ćemo opisati neće raditi ukoliko niste ispravno podesili autenticiranje bez zaporke (kojeg smo opisali u članku "Bez zaporke uz pomoć ssh-agenta").

Paket se instalira kao i svi drugi, pomoću apt-get ili aptitude:

# apt-get install pssh

Ovime ste dobili nekoliko alata:

parallel-ssh
parallel-slurp
parallel-nuke
parallel-scp
parallel-rsync

Parallel-ssh, naravno, izvršava istu naredbu na nekoliko udaljenih poslužitelja odjednom. Parallel-slurp može skinuti datoteke s udaljenih poslužitelja, dok parallel-scp radi obrnuto.

Naredba zanimljivog imena parallel-slurp "nemilosrdno - (kill -9)" ubija procese zadanog imena na svim poslužiteljima odjednom, dok parallel-rsync nudi mogućnosti alata rsync, ali naravno na više poslužitelja odjednom. Kako vidimo, ova dva zadnja  alata se djelomično preklapaju sa ostalim alatima iz paketa, pa ih nećemo posebno obrađivati.

#  parallel-ssh -i -l korisnik -h ip_adrese.txt 'hostname --fqdn'
[1] 12:33:55 [SUCCESS] 161.53.X.3
server.domena1.hr
[2] 12:33:55 [SUCCESS] 161.53.Y.3
server.domena2.hr
[3] 12:33:55 [SUCCESS] 161.53.Z.3
server.domena3.hr

Ukoliko nešto "ne štima", susrest ćete se s ovakvom porukom:

[1] 12:34:47 [FAILURE] 161.53.X.3 Exited with error code 255

Zašto je došlo do greške saznat ćete ukoliko upotrijebite prekidače "-o" i "-e".  Prvi preusmjerava standardni izlaz (STDOUT), a drugi ispis grešaka (STDERR) u datoteku. Možda ćete nešto otkriti i u logovima udaljenog poslužitelja.  Parallel-ssh sam po sebi nije baš informativan, čak i uz opciju "-v" (uključuje način rada verbose). Ipak, može vam pomoći opcija "-i" (inline) koja na ekranu ispisuje i poruke sa standardnog izlaza i standardne greške. Napomena, opcija "inline" nije podržana u parallel-scp i parallel-slurp.

U gornjem primjeru zadali smo da se na svakom od tri poslužitelja izvrši naredba "hostname --fqdn", čime smo naredili poslužitelju da se predstavi punim imenom i prezimenom. Može li se rabiti ime poslužitelja umjesto IP adrese, ako nam je tako zgodnije?  Naravno...

Probajmo nešto prebaciti na te poslužitelje:

# parallel-scp -l korisnik -h ip_adrese.txt test.txt /home/korisnik

U primjeru smo prebacili datoteku test.txt u osnovni direktorij korisnika "korisnik".

Da ponovimo, u naredbama za prebacivanje datoteka (parallel-scp i parallel-slurp) nema opcije "-i (inline)" za ispis grešaka na ekran, pa u slučaju da vam prebacivanje datoteka ne radi, svakako uključite opcije "-o" i "-e".

Pokušajmo prebaciti te iste datoteke natrag. Ovaj put sintaksa je malo drugačija:

# parallel-slurp -l korisnik -e error.log -h ip_adrese.txt -L serveri /home/korisnik/test.txt
[1] 13:11:22 [SUCCESS] 161.53.X.3
[2] 13:11:22 [SUCCESS] 161.53.Y.3
[3] 13:11:22 [SUCCESS] 161.53.Z.3
# ls -l serveri/161.53.X.3/test.txt
-rw-r--r-- 1 korisnik users 22 Oct 31 13:11 serveri/161.53.X.3/test.txt

Kod skidanja datoteka potrebno je navesti u koji će se direktorij snimati datoteke, puna staza na udaljenom poslužitelju do datoteke, te naziv koji će datoteka dobiti u lokalnom direktoriju. Možda malo nelogično, ali "tako je to zamišljeno".

U praksi smo doživjeli da alati iz ovog paketa iz nepoznatog razloga ponekad odbiju raditi, a razlog je u jednom dijelu slučajeva bio na strani udaljenog poslužitelja. Naime, većina poslužitelja danas ima zaštitu od brute-force napada alatom fail2ban ili pomoću samih iptablesa, a te su se zaštite znale aktivirati i spriječiti prijenos datoteka ili izvršavanje naredbi. Imajte to na umu, uključite ispis STDOUT-a i STDERR-a i problema neće biti.

Kuharice: 
Kategorije: 
Vote: 
0
No votes yet