Wenn ich pinge, habe ich diese Anzeige:
> ping -i 4 www.google.fr
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms
Ich hätte gerne vorher die Zeit des Ping.
So etwas wie:
> (right functions) + ping -i 7 www.google.fr
mardi 15 mai 2012, 10:29:06 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=503 ttl=46 time=45.5 ms
.......
.......
mardi 15 mai 2012, 10:29:13 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=508 ttl=46 time=44.9 ms
mardi 15 mai 2012, 10:29:20 (UTC+0200) - 64 bytes from wi-in-f94.1e100.net (173.194.67.94): icmp_seq=509 ttl=46 time=45.1 ms
Wie würden Sie dies in einer Befehlszeile tun (wenn es möglich ist)?
command-line
ping
Olivier Pons
quelle
quelle
Antworten:
Verwenden:
Sie erhalten das Ergebnis wie folgt:
quelle
ping 192.168.70.1 | while read pong; do echo "$(awk '{print $1}' /proc/uptime): $pong"; done
Eine weitere Möglichkeit, die
ping -D
Option zu verwenden, mit der Sie den Zeitstempel als Unix-Zeit erhalten.Hier eine Version des "Achu" -Befehls mit etwas anderem Format:
Das bringt dir:
quelle
Es gibt ein Hilfsprogramm
ts
, das stdin liest, Zeitstempel hinzufügt und in stdout schreibt:Es kann in Ubuntu mit installiert werden .
sudo apt install moreutils
quelle
apt install moreutils
Sie können auch Folgendes verwenden
gawk
(oderawk
, wenn Sie/etc/alternatives/awk
darauf hinweisen/usr/bin/gawk
):Dies ähnelt dem Ansatz in Achus Antwort , aber
ping
die Ausgabe wird angawk
eine Shell-Schleife weitergeleitet, die aufruftdate
. Wie bei diesem Ansatz funktioniert es auch ohne-c
, aber wenn Sie Ping nicht nach n Pings anhalten und die Schleife mit + anhalten , werden die üblichen Statistiken nicht gedruckt.-c n
CtrlCping
Dies geschieht unabhängig davon
ping
, ob die Ausgabe angawk
eine Shell-while
Schleife weitergeleitet wird. Der Grund dafür ist, dass der Befehl auf der rechten Seite der Pipe statt SIGINTping
empfängt, wenn + gedrückt wird, und nicht weiß, ob die Statistik vor dem Beenden gedruckt werden soll.CtrlCping
Wenn Sie ausgeführt haben ,
ping
ohne-c
auf der linken Seite eines Rohres (wie oben dargestellt) und wollen , dass es in einer solchen Art und Weise zu beenden , dass es nach wie vor die Statistik gedruckt werden kann , statt Drücken Ctrl+ Cin dem Terminal , wo es läuft, könnten Sie laufen von einem anderen Terminal, ersetzt durch die Prozess-ID des Befehls. Wenn Sie nur eine Instanz von ausführen, können Sie einfach verwenden .kill -INT PID
PID
ping
ping
killall -INT ping
Alternativ können Sie den
ping
Befehl auf der linken Seite der Pipe durch einen Befehl ersetzen , der eine Shell ausführt, die Prozess-ID dieser Shell meldet und diese Shell dann durch denping
Befehl ersetzt (wodurch dieselbe PID verwendet wird):In der ersten Ausgabezeile wird dann die Prozess-ID des
ping
Befehls angezeigt (die sich normalerweise jedes Mal unterscheidet). Es würde so aussehen, aber mit einer anderen Uhrzeit und einem anderen Datum und wahrscheinlich einer anderen Prozess-ID:Von einem anderen Terminal aus können Sie dann den Befehl ausführen
kill -INT 7557
und7557
durch die tatsächliche Prozess-ID ersetzen, die Sie gesehen haben, um denping
Befehl so zu beenden , dass er Statistiken druckt.(Wenn Sie die Jobsteuerungsfunktionen Ihrer Shell nutzen , können Sie dies auch innerhalb desselben Terminals erreichen. Wenn Sie jedoch Text von Ihrem Terminal kopieren möchten, ohne einen externen Teil entfernen zu müssen, in dem Sie Befehle in diesem Terminal ausgeführt haben, dann Sie sollten
ping
von einem separaten Terminal aus kündigen .)Weitere Lektüre:
man ping
- " Wenn die angegebene Anzahl von Paketen gesendet (und empfangen) wurde oder wenn das Programm mit einem SIGINT beendet wurde, wird eine kurze Zusammenfassung angezeigt. "quelle
SIGINT
an denping
Prozess senden (was durch Drücken von Strg + C erreicht wird) . Ich habe diese Antwort um Details erweitert.kill
killall
Wenn Sie es in einer Datei speichern möchten, geben Sie den folgenden Befehl im Terminal ein
Sie müssen keine Textdateien erstellen, dies wird automatisch durchgeführt
Ping_Test.txt
quelle
(Danke an Achu und Eliah Kagan für die Ideen) Es gibt einen Weg zu
ping
Ausgabe hinzufügenping
ctrl+c
zu tun , sollen diese eine rechten Teil des Befehls anweisen (nachdem das Rohr) zu ignorieren ,
SIGINT
unter Verwendung vontrap "" INT
:quelle