Hi Cristian, Da, foarte corect. Insa doream sa obtin un raspuns si pentru $exit_code=2, (avea un amic un script infiorator - cu o gramada de filtre aplicate dupa comanda ping tocmai pentru a determina in alt fel mai complicat daca hostul e UP sau DOWN, care semana cu cel care l-a dat pe lista parca Cristi).
In continuare, doresc sa fac citeva precizari, care pot fi utile si pentru alti membrii ai listei. Se pare insa ca, in functie de versiunea de ping, ping-ul nu da $exit_code= 2 in cazul in care NU RECEPTIONEAZA TOATE PACHETELE (asa cum rezulta dintr-un man mai vechi si cum NU rezulta dintr-un man mai nou), ci in alte cazuri (verificata de mine). Pe de alta parte, un script bazat pe ping, mai are si alta problema: poate deveni lent. Din cite am testat eu, pentru a functiona corect, si pentru a nu deveni foarte lent, acest script trebuie gindit facind un compromis in ceea ce priveste viteza de raspuns pe care o astepti si corectitudinea rezultatelor: Maresti viteza -> Scanezi mai repede DAR risti sa obtii rezultate eronate. Compromis: Scazi viteza -> Scanezi mai lent DAR obtii rezultate corecte. In cazul in care se accepta acest compromis, si daca vrei sa stii numai daca un host e UP sau Down, te poti baza pe cazul cind $exit_code = 0 (adica Host UP), care nu s-a modificat nicicum, indiferent de versiunea de ping. Altfel, asa cum am mai precizat, $exit_code mai difera un pic (mai ales cazul cind e 1). Scriptul de care vorbeam si pe care l-am modificat, l-am testat pe o clasa C (toata down) si am incercat sa reduc pe cit posibil timpul in care asteapta raspunsul (folosind ping -q -i 0.1 -c 3 -w 1 $network.$i &> /dev/null) A durat cam 4 min si 13s pina a scanat tot fata de cel original care trecuse deja de 6 minute si inca nu terminase (teoretic scriptul lui, trebuia sa termine in 8min si 30-40sec). Chiar si asa, este cam mult comparativ cu programele dedicate in acest scop (un scanner, in loc de ping+shell scripts, asa cum corect a sugerat Florin Andrei, este mult mai adecvat in acest caz). Oricum, ceea ce ma interesa pe mine, era sa-i arat amicului 2 lucruri: - faptul ca filtrarile care le facea el dupa: ping adresa | fiiltrul 1| filtrul 2|filtru n, erau complet inutile, pentru a determina numai daca un host e UP sau DOWN, lucru care s-a confirmat. - mai mult, poate sti si daca sunt ceva erori pe canalul de comunicatie, folosind chiar $exit_code=2, lucru care nu s-a mai confirmat, din cauza modificarilor aduse lui ping. Si cu asta am pus punct, ca am piedut deja prea mult timp cu reinventarea rotii, si mai tre' sa si muncesc... Regards, Alex PS: Multumesc oricum, tuturor celor care au participat la acest thred, On Friday 20 June 2003 05:52, you wrote: > On Thu, Jun 19, 2003 at 03:15:17PM +0300, Linux User wrote: > > Excelent raspuns. Exact ceea ce doream! Ai pus mana pe rana (...imediat > > dupa linia cu ping)! Eu incercasem cu $? dar in then si else, si-mi > > returna mereu acelasi code (zero)! > > Daca era exclusiv 0/1, puteai sa faci: > if ping -c1 -w2 1.2.3.4 &>/dev/null; then > echo 'Host up!'; > else > echo 'Host down!'; > fi
