我已经编写了以下系统命令来ping一个网站,它给了我想要的ICMP响应。
response = system("ping -c1 www.stackoverflow.com")
回复是 -
PING stackoverflow.com (64.34.119.12) 56(84) bytes of data.
64 bytes from stackoverflow.com (64.34.119.12): icmp_req=1 ttl=52 time=336 ms
--- stackoverflow.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 336.699/336.699/336.699/0.000 ms
=> true
现在我想存储上述统计数据的平均时间。所以我按下了下一个系统命令。
response_time = system("ping -c 1 www.pintile.com | tail -1| awk '{print $4}' | cut -d '/' -f 2")
这给了我平均时间,但没有将它存储在response_time变量中。存储在response_time中的Tha值为 true 。
335.898
=> true
现在我的问题是如何在response_time变量中存储平均时间?
答案 0 :(得分:1)
使用curl:
curl -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' -o /dev/null -s http://www.pintile.com
您将获得如下输出:
Lookup time: 0.589
Connect time: 0.603
PreXfer time: 0.603
StartXfer time: 1.425
Total time: 2.073
希望有所帮助。
已编辑:
选中answer。
如果用反引号包围命令,则根本不需要(显式地)调用system()。
使用它像:
response_time = `ping -c 1 www.pintile.com | tail -1| awk '{print $4}' | cut -d '/' -f 2`
现在你将获得response_time。 :)
答案 1 :(得分:0)
尝试:
`ping -c1 www.stackoverflow.com` =~ %r[= \d+\.\d+/(\d+\.\d+)]
response_time = $1 and $1.to_f