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
Dla osób szukających rozwiązania, które wymaga
ping
, użyj-i
przełącznika.Lub, jeśli chcesz użyć 0.1, musisz uruchomić go jako root
Nie ma potrzeby pobierania dodatkowych narzędzi.
źródło
ping
będzie czekać na odpowiedź - raczej po prostu wysyła kolejne pingi szybciej ...Możesz ustawić krótki limit czasu za pomocą
timeout
polecenia na Ubuntu / Debian:źródło
timeout (GNU coreutils) 8.4
.DURATION is a floating point number with an optional suffix: 's' for seconds (the default),
... W moichman timeout
raportach przypadkówGNU coreutils 8.26
. BWT, używam Ubuntu 17.04.Używałbym nmap do tego zadania.
nmap -sP --max-retries=1 --host-timeout=1500ms 10.0.0.1
Więcej informacji na ten temat można znaleźć w dokumentacji nmap .
źródło
możesz przyjrzeć się narzędziu ping arp, jeśli wszystkie hosty znajdują się w fizycznej sieci LAN. Robi to samo, ale używa pakietów arp warstwy 2 do wykonania polecenia „ping”. Możesz użyć kombinacji arpping i icmp ping, lub w rzeczywistości tcp ping, aby ustalić, jaka jest awaria. Przykładem jest awaria stosu tcp, chociaż obecnie zdarza się rzadko, możemy stwierdzić, czy awaria stosu tcp komputera uległa awarii, ponieważ maszyna nie zareagowałaby na ping, ale zareagowałaby na arp (który jest innym kawałkiem kodu na hoście) .
za pomocą kombinacji arpping, tcpping i icmp ping możesz dowiedzieć się, czy usługa na komputerze uległa awarii, stos tcp się zawiesił lub maszyna została całkowicie zamknięta. Jeśli zarządzałeś przełącznikami ethernetowymi, możesz uzyskać dane łącza fizycznego, ujawniając, czy maszyna jest faktycznie włączona, czy fizycznie odłączona. Mieliśmy sytuację, w której maszyny (klienci w pokojach publicznych) byłyby wyłączone, zebraliśmy te dane i wysłaliśmy budzenie na pakietach LAN, aby zasilić maszyny. :-)
Bez względu na to, jakie rozwiązania budujesz, jeśli Twoja sieć jest zajęta, pomyśl o wdrożeniu pewnego rodzaju qos, aby pakiety monitorujące miały priorytet w sieci, a utrata pakietów pomiarowych z powodu przeciążenia sieci może dawać fałszywe alarmy. Jeśli używasz qos do monitorowania pakietów, musisz pomyśleć o gromadzeniu danych o wykorzystaniu sieci.
Możesz więc uczynić swoje rozwiązanie monitorujące tak złożonym lub tak łatwym, jak tylko chcesz. Uważamy, że nawet najbardziej elementarny system monitorowania jest krokiem we właściwym kierunku, przynajmniej niektórzy administratorzy pilnują maszyn :-).
powodzenia!
źródło
@ jordon-bedwell ma świetną sugestię.
@ laszlo-valko https://stackoverflow.com/questions/20359487/why-does-ping-not-timeout-in-linux wyjaśnia, że limity czasu ping rozpoczynają się dopiero po ustaleniu adresu IP. Jeśli używasz dns, a twoja stacja robocza jest w trybie offline, ping nie może ustalić adresu ip, więc wydaje się, że czeka około domyślnych 20 + sekund przed zwróceniem false.
Korzystanie z linuksowego narzędzia „limit czasu” zapewnia większą kontrolę podczas uruchamiania polecenia ping z nazwą domeny.
Dzięki chłopaki
źródło
Użyj przełącznika -w , zarówno w systemie Windows, jak i Debianie.
Jest to szybki sposób sprawdzenia, czy maszyna w ogóle reaguje, zakładając, że zareaguje w czasie krótszym niż określona liczba sekund.
źródło
Jeśli możesz przeskanować swoją podsieć (lub jej część) bez wywoływania alarmów bezpieczeństwa i nie przeszkadza ci trochę dodatkowych danych, Angry IP Scanner jest szybki, bezpłatny, umożliwia kliknięcie w celu sortowania według stanu i może dostarczyć bardziej szczegółowych informacji .
źródło
Dlaczego nie uruchomić ping w tle, z wyjściem do pliku tymczasowego, równolegle dla każdego hosta? Następnie przespaj jedną sekundę, zabij wszystkie procesy ping, które są nadal uruchomione, i przeczytaj pliki, aby zebrać dane wyjściowe.
źródło
Limit czasu jest liczbą całkowitą wskazującą, jak daleko i jak długo pakiet może zostać wysłany. Wartości poniżej 1 są bez znaczenia. Wartość 1 wskazuje, że pingujesz tylko bezpośrednich sąsiadów.
Jedynym sposobem na przyspieszenie jest sprawdzenie tła i zebranie wyników. To właśnie robią narzędzia takie jak Nagios.
źródło
Możesz spróbować czegoś takiego. Ale uruchomienie zajmuje 15 minut.
źródło
nmap
że byłoby właściwym narzędziem do pracy.Spróbuj tego:
źródło
fping
?ping ma opcje [-t limit czasu] i [-W czas oczekiwania], dzięki czemu możesz:
źródło