Ping gibt dies standardmäßig zurück:
64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms
Gibt es eine Möglichkeit, den Zeitstempel hinzuzufügen?
Zum Beispiel,
Mon 21 May 2012 15:15:37 EST | 64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms
Ich bin auf OS X v10.7 (Lion), das scheinbar eine BSD - Version von Ping hat.
Wenn Ihr AWK strftime()
nicht hat:
ping Host | Perl -nle 'print scalar(localtime), " ", $_'
Um es in eine Datei umzuleiten, verwenden Sie die Standard-Shell-Umleitung und deaktivieren Sie die Ausgabepufferung:
ping Host | Perl -nle 'BEGIN {$|++} print scalar(localtime), " ", $_' > outputfile
Wenn Sie das ISO8601-Format für den Zeitstempel wünschen:
ping Host | Perl -nle 'use Time::Piece; BEGIN {$|++} print localtime->datetime, " ", $_' > outputfile
Ich konnte die auf Perl basierende Lösung aus irgendeinem Grund nicht in eine Datei umleiten, daher habe ich weiter nach einer bash
Möglichkeit gesucht, dies zu tun:
ping www.google.fr | while read pong; do echo "$(date): $pong"; done
Wed Jun 26 13:09:23 CEST 2013: PING www.google.fr (173.194.40.56) 56(84) bytes of data.
Wed Jun 26 13:09:23 CEST 2013: 64 bytes from zrh04s05-in-f24.1e100.net (173.194.40.56): icmp_req=1 ttl=57 time=7.26 ms
Wed Jun 26 13:09:24 CEST 2013: 64 bytes from zrh04s05-in-f24.1e100.net (173.194.40.56): icmp_req=2 ttl=57 time=8.14 ms
Das Guthaben geht an https://askubuntu.com/a/137246
Von man ping
:
-D Print timestamp (unix time + microseconds as in gettimeofday) before each line.
Es wird so etwas produzieren:
[1337577886.346622] 64 bytes from 4.2.2.2: icmp_req=1 ttl=243 time=47.1 ms
Dann könnte der Zeitstempel aus der Antwort ping
analysiert und mit date
in das erforderliche Format konvertiert werden.
terminalausgang:
ping -i 5 google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}'
dateiausgabe:
ping -i 5 google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' > test.txt
terminal + Dateiausgabe:
ping -i 5 google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' | tee test.txt
hintergrund der Dateiausgabe:
Nohup ping -i 5 google.com | xargs -L 1 -I '{}' date '+%Y-%m-%d %H:%M:%S: {}' > test.txt &
Meine ursprüngliche Einreichung war falsch, da das Datum nicht für jede Zeile ausgewertet wurde. Korrekturen wurden vorgenommen.
Versuche dies
ping google.com | xargs -L 1 -I '{}' date '+%+: {}'
erzeugt die folgende Ausgabe
Thu Aug 15 10:13:59 PDT 2013: PING google.com (74.125.239.103): 56 data bytes
Thu Aug 15 10:13:59 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=0 ttl=55 time=14.983 ms
Thu Aug 15 10:14:00 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=1 ttl=55 time=17.340 ms
Thu Aug 15 10:14:01 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=2 ttl=55 time=15.898 ms
Thu Aug 15 10:14:02 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=3 ttl=55 time=15.720 ms
Thu Aug 15 10:14:03 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=4 ttl=55 time=16.899 ms
Thu Aug 15 10:14:04 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=5 ttl=55 time=16.242 ms
Thu Aug 15 10:14:05 PDT 2013: 64 bytes from 74.125.239.103: icmp_seq=6 ttl=55 time=16.574 ms
Die Option -L 1 bewirkt, dass xargs jeweils eine Zeile anstelle von Wörtern verarbeitet.
Unter OS X können Sie einfach die Option --Apple-Time verwenden:
ping -i 2 --Apple-time www.Apple.com
Produziert Ergebnisse wie:
10:09:55.691216 64 bytes from 72.246.225.209: icmp_seq=0 ttl=60 time=34.388 ms
10:09:57.687282 64 bytes from 72.246.225.209: icmp_seq=1 ttl=60 time=25.319 ms
10:09:59.729998 64 bytes from 72.246.225.209: icmp_seq=2 ttl=60 time=64.097 ms
Versuche dies:
ping www.google.com | while read endlooop; do echo "$(date): $endlooop"; done
Es gibt etwas wie:
Wednesday 18 January 09:29:20 AEDT 2017: PING www.google.com (216.58.199.36) 56(84) bytes of data.
Wednesday 18 January 09:29:20 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=1 ttl=57 time=2.86 ms
Wednesday 18 January 09:29:21 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=2 ttl=57 time=2.64 ms
Wednesday 18 January 09:29:22 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=3 ttl=57 time=2.76 ms
Wednesday 18 January 09:29:23 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=4 ttl=57 time=1.87 ms
Wednesday 18 January 09:29:24 AEDT 2017: 64 bytes from syd09s12-in-f36.1e100.net (216.58.199.36): icmp_seq=5 ttl=57 time=2.45 ms
Pipe das Ergebnis an awk
:
ping Host | awk '{if($0 ~ /bytes from/){print strftime()"|"$0}else print}'
Auf Macos können Sie das tun
ping --Apple-time 127.0.0.1
Die Ausgabe sieht so aus
16:07:11.315419 64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.064 ms
16:07:12.319933 64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.157 ms
16:07:13.322766 64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.066 ms
16:07:14.324649 64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.148 ms
16:07:15.328743 64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.092 ms
ping -D -n -O -i1 -W1 8.8.8.8
oder vielleicht
while true; do \
ping -n -w1 -W1 -c1 8.8.8.8 \
| grep -E "rtt|100%" \
| sed -e "s/^/`date` /g"; \
sleep 1; \
done
Ich brauche dies auch, um das Netzwerkproblem für das Zeitlimitproblem bei der Datenbankspiegelung zu überwachen. Ich benutze den Befehlscode wie folgt:
ping -t Google.com|cmd /q /v /c "(pause&pause)>nul & for /l %a in () do (set /p "data=" && echo(!date! !time! !data!)&ping -n 2 Google.com>nul" >C:\pingtest.txt
Sie müssen lediglich Google.com in Ihren Servernamen ändern. Es funktioniert perfekt für mich. und vergessen Sie nicht, dies zu beenden, wenn Sie fertig sind. Die Datei pingtest.txt erhöht sich um etwa 1 KB pro Sekunde (ungefähr).
Vielen Dank für raymond.cc. https://www.raymond.cc/blog/timestamp-ping-with-hrping/
Sie haben keinen Zeitstempel oder Intervall für die Dauer einer solchen Ausgabe angegeben. Ich hielt es für eine endlose Schleife. Sie können es entsprechend Ihrem Bedarf entsprechend ändern.
while true
do
echo -e "`date`|`ping -n -c 1 <IP_TO_PING>|grep 'bytes from'`"
sleep 2
done
Sie können eine Funktion in Ihrer ~/.bashrc
-Datei erstellen, sodass Sie auf Ihrer Konsole einen Ping-Befehl ping-t
erhalten:
function ping-t { ping "$1" | while read pong; do echo "$(date): $pong"; done; }
Jetzt können Sie dies auf der Konsole aufrufen:
ping-t example.com
Sa 31. Mär 12:58:31 CEST 2018: PING example.com (93.184.216.34) 56 (84) Datenbytes.
Sa 31. Mär 12:58:31 CEST 2018: 64 Bytes von 93.184.216.34 (93.184.216.34): icmp_seq = 1 ttl = 48 Zeit = 208 ms
Sa 31. Mär 12:58:32 CEST 2018: 64 Bytes von 93.184.216.34 (93.184.216.34): icmp_seq = 2 ttl = 48 Zeit = 233 ms
Versuchen Sie diese Zeile.
while sleep 1;do echo "$(date +%d-%m-%y-%T) $(ping -c 1 whatever.com | gawk 'FNR==2{print "Response from:",$4,$8}')" | tee -a /yourfolder/pingtest.log;done
Sie müssen es mit ctrl-c
tho abbrechen.