tl;dr
ping の平均値(avg の部分)を取得して growthforecast で可視化したかったのでメモ。
ja.stackoverflow.com
ping の平均値を取得する
ping -c 5 8.8.8.8 | tail -1 | tee >(cut -d/ -f5) > /dev/null
実際に試してみると以下のような感じ。(通信環境が良くないところで実施したのでパケロスしている)
# # まずは普通に ping # % ping -c 5 8.8.8.8 PING 8.8.8.8 (8.8.8.8): 56 data bytes 64 bytes from 8.8.8.8: icmp_seq=0 ttl=53 time=636.704 ms 64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=622.515 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=53 time=617.948 ms Request timeout for icmp_seq 3 --- 8.8.8.8 ping statistics --- 5 packets transmitted, 3 packets received, 40.0% packet loss round-trip min/avg/max/stddev = 617.948/625.722/636.704/7.986 ms # # 平均だけ取得 # % ping -c 5 8.8.8.8 | tail -1 | tee >(cut -d/ -f5) > /dev/null 1963.132
ホントに平均値(avg)の値が取れているかも確認。
% ping -c 5 8.8.8.8 | tail -1 > ping.txt % cat ping.txt| tee >(cut -d/ -f5) round-trip min/avg/max/stddev = 53.375/71.600/79.712/9.390 ms 71.600
可視化
以下のようなシェルスクリプトを書いて cron か何かで定期的によしなに…
#!/usr/bin/env bash sec=`ping -c 5 8.8.8.8 | tail -1 | tee >(cut -d/ -f5) > /dev/null` curl -s -F number=$(echo $sec | sed 's/.[0-9,]*$//g') http://xxxxxxxxxxxxxxxx:5125/api/ping/response_time/average
以上、メモでした。