Sto cercando di scrivere uno script che elenca tutti gli host sulla mia LAN (ce ne sono circa 20) e scrive lo stato del ping accanto a ciascun host. Ho il file di leasing DHCP, quindi ho tutti gli IP (diciamo 10.0.0.1, 10.0.0.2, ecc.), Tutto ciò di cui ho bisogno è lo stato del ping per ogni host.
Quindi, il mio script avvia un singolo ping per ciascun host:
ping -c 1 10.0.0.1
Sfortunatamente, quando un host è offline, il ping impiega molto tempo per il timeout. Ho controllato man ping
, sembrano esserci due opzioni per impostare il ritardo di timeout: -w deadline
e -W timeout
. Penso di essere interessato a quest'ultimo.
Quindi ho provato questo:
ping -c 1 -W 1 10.0.0.1
Ma aspettare un secondo per host offline è ancora troppo lungo. Ho provato a impostarlo al di sotto di un secondo, ma non sembra affatto prendere in considerazione il parametro:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
C'è un modo per impostare il timeout su un valore inferiore? In caso contrario, ci sono alternative?
modificare
- Il sistema operativo è Debian Lenny.
- Gli host che sto cercando di eseguire il ping sono in realtà punti di accesso. Sono sulla stessa rete virtuale e sottorete degli utenti (per semplicità di distribuzione e sostituzione). Questo è il motivo per cui non voglio scansionare tutta la sottorete (con un
ping -b
esempio).
Modifica n. 2
Ho accettato la fping
soluzione (grazie per tutte le altre risposte). Questo comando fa esattamente quello che stavo cercando:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
Il completamento di questo comando richiede al massimo 500 ms e mi dà lo stato di ping di tutti gli host contemporaneamente:
10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)
10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0
Su Debian Lenny, l'installazione è banale:
aptitude update
aptitude install fping