0

我编写了以下系统命令来 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

现在我想存储上述统计数据的平均时间。所以我点击了下一个系统命令,即 as。

response_time = system("ping -c 1 www.pintile.com | tail -1| awk '{print $4}' | cut -d '/' -f 2")

这给了我平均时间,但没有将其存储在 response_time 变量中。存储在 response_time 中的值是true

335.898
 => true 

现在我的问题是如何将平均时间存储在 response_time 变量中?

4

2 回答 2

1

使用卷曲:

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

希望有所帮助。

编辑:

检查这个答案

如果你用反引号包围你的命令,那么你根本不需要(明确地)调用 system() 。

像这样使用它:

response_time = `ping -c 1 www.pintile.com | tail -1| awk '{print $4}' | cut -d '/' -f 2`

现在您将获得 response_time 。:)

于 2012-05-03T07:39:13.423 回答
0

尝试:

`ping -c1 www.stackoverflow.com` =~ %r[= \d+\.\d+/(\d+\.\d+)]
response_time = $1 and $1.to_f
于 2012-05-03T07:40:22.713 回答