引数で http://google.com
みたいな文字列を受け取ると、そこに 10回 http アクセスして結果と要した時間を表示します。
エラー処理はしてないし、末尾の / 補完もインターバルも設定できないけど、ひな形として置いておきます。
たまにこういうベタなスクリプトをちょっとだけカスタマイズしたものが単発でほしくなることがあるのです。
http_ping.rb
#!/usr/bin/env ruby
require 'net/http'
require 'uri'
COUNT=10
INTERVAL=1
def ping(s)
url = URI.parse(s)
res = Net::HTTP.start(url.host, url.port) {|http|
path = url.path.length != 0 ? url.path : "/"
http.get(path)
}
res.body
"#{res.code} #{res.msg}"
rescue => e
"error #{e.message}"
end
target = ARGV[0]
COUNT.times do
t0 = Time.now
result = ping(target)
t1 = Time.now
puts "#{result} #{t1 - t0} sec"
sleep INTERVAL
end
実行結果は以下のようになります。
./http_ping.rb http://qiita.com
200 OK 0.835151 sec
200 OK 0.265178 sec
200 OK 0.22323 sec
200 OK 0.81516 sec
200 OK 0.147743 sec
200 OK 0.159017 sec
200 OK 0.255269 sec
200 OK 0.150393 sec
200 OK 0.173694 sec
200 OK 0.265928 sec