2012-05-03 7 views
0

私は、次のシステムコマンドを書いて、希望のICMP応答を与えるWebサイトをpingしました。ruby​​ on railsのpingコマンドからの平均時間を保存する

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変数の平均時間を格納する方法あります?

答えて

1

使用カール:

Lookup time: 0.589 
Connect time: 0.603 
PreXfer time: 0.603 
StartXfer time: 1.425 

Total time: 2.073 

助ける希望:

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 

あなたは次のように出力が得られます。

EDITED:

このanswerをチェックしてください。

コマンドをバッククックで囲むと、(明示的に)system()を呼び出す必要はありません。

が好き、それを使用します。

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

今、あなたはRESPONSE_TIMEを取得します。 :)

+0

それは私に同じ出力を提供しますが、私は、レールのコンソールで同じ使用して、システムコマンドを実行したときに、私は質問で述べたように、それは値を格納しません間違いありません。 –

+0

こんにちはスワチ...私の編集を確認してください。 – swati

+0

Yuppはそれが本当に働いた.. Thanx :) –

0

試してみてください。

`ping -c1 www.stackoverflow.com` =~ %r[= \d+\.\d+/(\d+\.\d+)] 
response_time = $1 and $1.to_f 
関連する問題