93

Pingはデフォルトでこれを返します。

64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms

タイムスタンプを追加する方法はありますか?

例えば、

Mon 21 May 2012 15:15:37 EST | 64 bytes from 203.173.50.132: icmp_seq=0 ttl=244 time=57.746 ms

私は OS X v10.7 (Lion) を使用していますが、これにはBSDバージョンの ping があるようです。

4

16 に答える 16

138

何らかの理由で Perl ベースのソリューションをファイルにリダイレクトできなかったので、検索を続け、bashこれを行う唯一の方法を見つけました。

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

クレジットはhttps://askubuntu.com/a/137246に行きます

于 2013-06-26T11:13:47.053 に答える
80

AWK に次のものが含まれていない場合strftime():

ping host | perl -nle 'print scalar(localtime), " ", $_'

ファイルにリダイレクトするには、標準のシェル リダイレクトを使用し、出力バッファリングをオフにします。

ping host | perl -nle 'BEGIN {$|++} print scalar(localtime), " ", $_' > outputfile

タイムスタンプに ISO8601 形式が必要な場合:

ping host | perl -nle 'use Time::Piece; BEGIN {$|++} print localtime->datetime, " ", $_' > outputfile
于 2012-05-21T05:59:52.027 に答える
34

からman ping:

   -D     Print timestamp (unix time + microseconds as in gettimeofday) before each line.

次のようなものが生成されます。

[1337577886.346622] 64 bytes from 4.2.2.2: icmp_req=1 ttl=243 time=47.1 ms

その後、応答からタイムスタンプを解析しping、必要な形式に変換できますdate

于 2012-05-21T05:20:10.690 に答える
8

あなたができるmacosで

ping --apple-time 127.0.0.1

出力は次のようになります

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
于 2017-10-19T22:10:35.513 に答える
5

より簡単なオプションはts(1)、moreutils から使用することです (ほとんどのディストリビューションではかなり標準的です)。

$ ping 1.1.1.1 | ts 

Feb 13 12:49:17 PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data. 
Feb 13 12:49:17 64 bytes from 1.1.1.1: icmp_seq=1 ttl=57 time=5.92 ms
Feb 13 12:49:18 64 bytes from 1.1.1.1: icmp_seq=2 ttl=57 time=5.30 ms
Feb 13 12:49:19 64 bytes from 1.1.1.1: icmp_seq=3 ttl=57 time=5.71 ms
Feb 13 12:49:20 64 bytes from 1.1.1.1: icmp_seq=4 ttl=57 time=5.86 ms

また

 ping 1.1.1.1 -I eth0 | ts "[%FT%X]"

シェル/回避策と同じ strftime フォーマット文字列を許可しますdate

于 2021-02-13T00:32:59.837 に答える
4

結果を にパイプしawkます:

 ping host | awk '{if($0 ~ /bytes from/){print strftime()"|"$0}else print}'
于 2012-05-21T05:28:31.653 に答える
1
ping -D -n -O -i1 -W1 8.8.8.8

または多分

while true; do \
    ping -n -w1 -W1 -c1 8.8.8.8 \
    | grep -E "rtt|100%" \
    | sed -e "s/^/`date` /g"; \
    sleep 1; \
done
于 2014-10-31T02:16:30.413 に答える
1

そのような出力が必要な時間のタイム スタンプや間隔を指定しなかったため、無限ループであると見なされました。必要に応じて変更できます。

while true
do
   echo -e "`date`|`ping -n -c 1 <IP_TO_PING>|grep 'bytes from'`"
   sleep 2
done
于 2012-05-21T18:25:18.123 に答える
1

これは、データベース ミラーリングのタイムアウトの問題についてネットワークの問題を監視するためにも必要です。以下のコマンドコードを使用します。

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

Google.com をサーバー名に変更するだけです。それは私にとって完璧に機能します。終了したら、これを停止することを忘れないでください。pingtest.txt ファイルは、毎秒 1 KB (約) 増加します。

raymond.cc に感謝します。https://www.raymond.cc/blog/timestamp-ping-with-hrping/

于 2017-09-15T13:35:38.023 に答える
0

この行を試してください。

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

トーでキャンセルする必要がありますctrl-c

于 2016-11-22T01:50:20.860 に答える