Próbuję napisać skrypt, który wyświetla listę wszystkich hostów w mojej sieci LAN (jest ich około 20) i zapisuje status pingowania obok każdego hosta. Mam plik dzierżawy DHCP, więc mam wszystkie adresy IP (powiedzmy 10.0.0.1, 10.0.0.2 itd.), Wszystko czego potrzebuję to status ping dla każdego hosta.
Tak więc mój skrypt uruchamia pojedynczy ping dla każdego hosta:
ping -c 1 10.0.0.1
Niestety, gdy host jest w trybie offline, ping zajmuje dużo czasu. Sprawdziłem man ping
, wydaje się, że istnieją dwie opcje ustawiania czasu oczekiwania: -w deadline
i -W timeout
. Myślę, że interesuje mnie to drugie.
Więc próbowałem tego:
ping -c 1 -W 1 10.0.0.1
Ale oczekiwanie jednej sekundy na host offline jest wciąż zbyt długie. Próbowałem ustawić go na mniej niż sekundę, ale wydaje się, że w ogóle nie uwzględnia parametru:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
Czy istnieje sposób na ustawienie limitu czasu na niższą wartość? Jeśli nie, czy są jakieś alternatywy?
Edytować
- System operacyjny to Debian Lenny.
- Hosty, które próbuję pingować, są w rzeczywistości punktami dostępu. Są w tej samej sieci Vlan i podsieci co użytkownicy (dla uproszczenia wdrażania i wymiany). Dlatego nie chcę skanować całej podsieci (
ping -b
na przykład za pomocą ).
Edytuj # 2
Zaakceptowałem fping
rozwiązanie (dziękuję za wszystkie pozostałe odpowiedzi). To polecenie robi dokładnie to, czego szukałem:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
Wykonanie tego polecenia zajmuje najwyżej 500 ms i daje mi status ping wszystkich hostów jednocześnie:
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
W systemie Debian Lenny instalacja jest prosta:
aptitude update
aptitude install fping