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



Raspunde prin e-mail lui