Jak ustawić ping w Linuksie, aby wyświetlał żądanie przekroczenia limitu czasu zamiast pomijać dane wyjściowe?
Podobnie jak wersja ping systemu Windows.
linux
networking
ping
Andre
źródło
źródło
Odpowiedzi:
fping nie działało dla mnie ... W moim przypadku przez większość czasu chcę to zobaczyć w zasadzie podczas ponownego uruchamiania serwera ... działa to całkiem nieźle w systemie Windows ...
Buduję prosty skrypt (rozwijając odpowiedź @entropo), aby mi w tym pomóc, co może pomóc w udzieleniu odpowiedzi na to pytanie:
https://gist.github.com/brunobraga/7259197
A użycie jest coś takiego:
źródło
Najlepszą rzeczą, jaką znalazłem, było użycie flagi -O (Uwaga: nie działa na wszystkich dystrybucjach - przy użyciu Linux Mint 17.1 Rebecca IPUTILS-PING 3: 20121221-4ubuntu1.1)
Ze strony podręcznika:
-O Report outstanding ICMP ECHO reply before sending next packet. This is useful together with the timestamp -D to log output to a diagnostic file and search for missing answers.
źródło
ping
; na Debian Wheezy dostaję „ping: invalid option -- 'O'
”, ale na Jessie działa jak zauważyłeś. Możesz zaktualizować swoją odpowiedź, aby uwzględnić te informacje. (Kiedy używam polecenia ping, aby sprawdzić, czy host działa w skryptach powłoki, robię coś takiego:
ping -W 1 -c 1 $HOST 2>&1 > /dev/null || (echo -n "dead!"; false) && command-that-needs-host-to-be-up
Zasadniczo wysyła jeden ICMP, który przekracza limit czasu w ciągu sekundy bez danych wyjściowych, i używa kodu wyjścia do blokowania dalszych działań.
źródło
Zwykli nie
ping
mogą tego zrobić. Jeśli próbujesz coś napisać, masz kilka opcji:Jeśli ping się nie powiedzie,
$?
będzie wynosił 1, jeśli ping się powiedzie,$?
będzie wynosił 0.Inną opcją jest używanie,
fping
które działa podobnie jak Ciscoping
:źródło
Powyższy skrypt autorstwa bruno.braga działa dobrze, jednak osobiście wolę używać aliasu w profilu powłoki (np. .Bashrc), aby mógł to być codzienny przypadek użycia.
Moje rozwiązanie poniżej automatycznie oblicza również numer kolejny żądania ECHO:
Oto przykład wyjścia, gdy host jest niestabilny z przekroczonym limitem czasu:
Oczywiście wadą jest brak statystyk na końcu po naciśnięciu CTRL-C. W razie potrzeby można również obliczyć min / avg / max za pomocą skryptu powłoki, mdev znacznie wykracza poza zakres.
źródło
Obawiam się, ale nie ma 100% rozwiązania tego problemu ze standardowym pingiem. Nawet przy ping -v dla pełnego wyjścia ping byłby cichy w przypadku przekroczenia limitu czasu. Możesz spróbować użyć:
To zatrzyma ping po 2 sekundach, a następnie pokaże liczbę przesłanych pakietów i utratę pakietów. Inną opcją byłoby użycie mtr .
źródło
źródło
fping
jest dobra, a BTW-e
nie jest konieczne, gdy-l
lub-c
jest dodawany, można po prostu użyćfping -l 8.8.8.8
, wynik jest taki sam.Naprawdę podoba mi się skrypt powłoki Bruno. Dodałem wiersz, aby utworzyć plik ze wszystkimi awariami.
echo -e "
date +'%Y/%m/%d %H:%M:%S'
- host $ host to \ 033 [0; 31mdown \ 033 [0m" >> ./lostpackets.txtźródło
Bez pisania skryptów
ping -f -i 1 hostname
Zalety : standardowe polecenie Linuksa - nic do zainstalowania lub skryptu.
Wady :
Z minimalnym skryptem
Wady : na końcu nie otrzymujesz statystyk i nie możesz użyć tych 3 opcji ping:
-i
aby zmienić interwał między wysyłaniem pakietów (jest ustawiony na 1 sekundę)-W
zmienić limit czasu (jest ustawiony na 1 sekundę)-c
zatrzymać po wysłaniu N pakietówBTW: Jest to jeden z niezwykle rzadkich przykładów funkcjonalności, których tak naprawdę brakuje mi w narzędziu Linux CLI, ale znajduję się w narzędziu Windows. Wykonanie, które potwierdza regułę, jak mówią :-)
źródło
Jeśli chcesz wykonywać ciągłe pingowanie podobnie jak okna i ze znacznikiem czasu, użyj tego. Zastąp
192.168.0.1
go własnym adresem IPPrzykład Odpowiedz OK
Przykład żądania upłynął limit czasu
źródło
Normalny ping rzeczywiście pokazuje limity czasu. Patrząc na wartość seq = między pingami, możesz stwierdzić, ile limitów czasu
Pomiędzy powyższymi 2 pingami wystąpiły limity czasu EG 3, ponieważ pierwszy był,
seq=8
a drugi byłseq=11
(9 i 10 były limitami czasu)seq=sequence
.źródło