0

以下は、ping2URLの出力です。

PING www.abc.com(96.126.98.69):56データバイト
96.126.98.69から64バイト:icmp_seq = 0 ttl = 43 time = 444.812 ms
96.126.98.69から64バイト:icmp_seq = 1 ttl = 43 time = 467.554 ms

---www.abc.comping統計---
送信された2パケット、受信された2パケット、0.0%のパケット損失
往復の最小/平均/最大/標準偏差=444.812/ 456.183 / 467.554/11.371ミリ秒
PING www.kkk.com(90.187.36.10):56データバイト
90.187.36.10から64バイト:icmp_seq = 0 ttl = 51 time = 404.907 ms
90.187.36.10から64バイト:icmp_seq = 1 ttl = 51 time = 427.510 ms

---www.kkk.comping統計---
送信された2パケット、受信された2パケット、0.0%のパケット損失
往復の最小/平均/最大/標準偏差=404.907/ 416.208 / 427.510/11.302ミリ秒

各IPの時間の算術値を取得したいと思います。お気に入り

96.126.98.69 a_time = 456.183
90.187.36.10 a_time = 416.208

次のコードを使用して、時間とともに各IPを取得できます。

cat out | grep "64 bytes"

しかし、各IPの算術平均を取得する方法がわかりません。

4

2 に答える 2

0

awkワンライナーはどうですか?

awk -F'[:= ]' '/^64 b/{a[$4]+=$11}END{for(k in a)print k,"a_time =",a[k]/2}' out
90.187.36.10 a_time = 416.208
96.126.98.69 a_time = 456.183

からパケットの数を増やしてからping -c 2ping -c 5最後のパケットa[k]/2をオプションに変更する場合は、オプションをa[k]/5使用して値を変数として渡すことができます。awk-v

于 2013-01-21T14:29:56.760 に答える
0

これをやってみてください:

num=2
cat ips |
xargs -n1 ping -c $num |
awk -vnum=$num -F'[ =:]' '
    /^[0-9]+ bytes +from/{
        ips[$4]+=$11
    }
    END{
        for (ip in ips) print ip, "a_time =", ips[ip]/num
    }
'

出力例

127.0.0.1 a_time = 0.0225
8.8.8.8 a_time = 25.7

説明

  • を使用して、IP をキーとしてミリ秒を配列に追加します
  • @最後に、配列を反復処理し、num 変数整数 (ここでは 2) で割ります
  • 列をスペースで分割し =:スイッチ-Fで分割します
于 2013-01-21T14:09:49.410 に答える