Wie kann ich den Linux-Ping veranlassen, das Timeout der Anforderungen anzuzeigen, anstatt die Ausgabe auszulassen?
Genau wie die Windows-Version von Ping.
linux
networking
ping
Andre
quelle
quelle
Antworten:
fping hat bei mir nicht funktioniert ... In meinem Fall möchte ich meistens sehen, dass dies im Grunde genommen während des Neustarts des Servers geschieht ... das funktioniert unter Windows ziemlich gut ...
Ich erstelle ein einfaches Skript (erweitere @entropo answer), das mir dabei hilft, diese Frage zu beantworten:
https://gist.github.com/brunobraga/7259197
Und Nutzung ist so etwas wie:
quelle
Das Beste, was ich gefunden habe, war die Verwendung des Flags -O (Beachten Sie, dass es nicht auf allen Distributionen funktioniert - mit Linux Mint 17.1 Rebecca IPUTILS-PING 3: 20121221-4ubuntu1.1)
Von der Manpage:
-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.
quelle
ping
; Auf Debian Wheezy bekomme ich "ping: invalid option -- 'O'
", aber auf Jessie funktioniert es, wie Sie notieren. Möglicherweise möchten Sie Ihre Antwort aktualisieren, um diese Informationen einzuschließen. (Ich habe auch eine vorgeschlagene Bearbeitung eingereicht, um vorformatierten Text für die Ausgabe und die Informationen aus der Manpage zu verwenden)Wenn ich Ping verwende, um festzustellen, ob ein Host in Shell-Skripten aktiv ist, gehe ich folgendermaßen vor:
ping -W 1 -c 1 $HOST 2>&1 > /dev/null || (echo -n "dead!"; false) && command-that-needs-host-to-be-up
Grundsätzlich wird in einer Sekunde ein ICMP-Timeout ohne Ausgabe gesendet und der Exit-Code verwendet, um weitere Aktionen zu steuern.
quelle
Es gibt keine Möglichkeit für die Allgemeinheit
ping
, dies zu tun. Wenn Sie versuchen, ein Skript zu erstellen, haben Sie folgende Optionen:Wenn der Ping fehlschlägt,
$?
ist 1, wenn der Ping erfolgreich ist,$?
ist 0.Die andere Option
fping
funktioniert ähnlich wie bei Ciscoping
:quelle
Das obige Skript von bruno.braga funktioniert einwandfrei, ich persönlich bevorzuge jedoch die Verwendung eines Alias in einem Shell-Profil (wie .bashrc), damit es ein alltäglicher Anwendungsfall sein kann.
Meine unten stehende Lösung berechnet auch automatisch die ECHO-Anforderungssequenznummer:
Hier ist das Ausgabebeispiel, wenn der Host mit einer Zeitüberschreitung instabil ist:
Der Nachteil ist natürlich: Keine Statistik am Ende, wenn STRG-C gedrückt wird. Auf Wunsch ist es auch möglich, min / avg / max per Shell-Skript zu berechnen, mdev sprengt jedoch den Rahmen.
quelle
Ich fürchte, aber es gibt keine 100% ige Lösung für dieses Problem mit Standard-Ping. Sogar mit ping -v für die ausführliche Ausgabe würde ping im Falle von Zeitüberschreitungen stumm bleiben. Sie könnten versuchen, Folgendes zu verwenden:
Dies würde nach 2 Sekunden aufhören zu pingen und dann die Anzahl der übertragenen Pakete und den Paketverlust anzeigen. Eine andere Möglichkeit wäre die Verwendung von mtr .
quelle
quelle
fping
ist gut, und BTW das-e
ist nicht notwendig, wenn-l
oder-c
hinzugefügt wird, könnte nur verwendenfping -l 8.8.8.8
, die Ausgabe ist die gleiche.Ich mag das Shell-Skript von Bruno sehr. Ich habe eine Zeile hinzugefügt, um eine Datei mit allen Fehlern zu erstellen.
echo -e "
date +'%Y/%m/%d %H:%M:%S'
- host $ host ist \ 033 [0; 31mdown \ 033 [0m" >> ./lostpackets.txtquelle
Ohne etwas zu schreiben
ping -f -i 1 hostname
Vorteile : Standard Linux Kommando - nichts zu installieren oder zu skripten.
Nachteile :
Mit einem minimalen Skript
Nachteile : Sie erhalten am Ende keine Statistik und können diese 3 Ping-Optionen nicht verwenden:
-i
Ändern des Intervalls zwischen dem Senden von Paketen (fest auf 1 Sek. codiert)-W
um das Timeout zu ändern (es ist fest auf 1sec codiert)-c
nach dem Senden von N Paketen zu stoppenÜbrigens: Dies ist eines der äußerst seltenen Beispiele für Funktionen, die ich in einem Linux-CLI-Tool wirklich vermisse, aber in einem Windows-Tool finde. Die Hinrichtung, die die Regel beweist, wie sie sagen :-)
quelle
Wenn Sie einen kontinuierlichen Ping wie bei Windows und mit Zeitstempel ausführen möchten, verwenden Sie diesen. Fühlen Sie sich frei, durch
192.168.0.1
Ihre eigene IP-Adresse zu ersetzenBeispiel Antwort OK
Beispiel Zeitüberschreitung bei der Anforderung
quelle
Der normale Ping zeigt tatsächlich Timeouts an. Anhand des Wertes seq = zwischen den Pings können Sie erkennen, wie viele Timeouts auftreten
EG 3 Timeouts traten zwischen den obigen 2 Pings auf, da der erste
seq=8
und der zweite Timeout warenseq=11
(9 und 10 waren Timeouts)seq=sequence
.quelle