僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
趣向を変えて、ping -c 1 を繰り返してみた。
man pageによれば、タイムアウトは10秒とのことである。
$ while :; do ping -c 1 $GLOBAL_IP; sleep 1; done PING $GLOBAL_IP ($GLOBAL_IP) 56(84) bytes of data. 64 bytes from $GLOBAL_IP: icmp_seq=1 ttl=55 time=2105 ms --- $GLOBAL_IP ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 2105.687/2105.687/2105.687/0.000 ms PING $GLOBAL_IP ($GLOBAL_IP) 56(84) bytes of data. --- $GLOBAL_IP ping statistics --- 1 packets transmitted, 0 received, 100% packet loss, time 0ms
のようなデータから、"100% packet loss" な行と"time="のある行を grepで掬い出す。
64 bytes from $GLOBAL_IP: icmp_seq=1 ttl=55 time=2105 ms 1 packets transmitted, 0 received, 100% packet loss, time 0ms
Rにかけるデータを抽出する。
paket loss をタイムアウト値で補完する。
$ awk 'BEGIN{s=1}\ > {if($1==1){$7=10000} \ > else{sub("time=","",$7)};\ > {print s,$7}s+=1}' \ > bus_trans.txt 1 10000 2 6200 3 2752 . .
Rもshebangでスクリプト化してみた。
#!/usr/bin/env Rscript busdata=read.table("bus.txt") png(filename="bus.png", width=640,height=480) plot ( busdata, type="l", ylim=c(0,9000), xlab="ping", ylab="ms", main="ping -c $GLOBAL_IP", sub=">8000 is PACKET LOSS!" ) dev.off()
タイムアウトをタイムアウトらしく表示させるとか、 もう少し色々できなければ...
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。