# ruby ping.rb |egrep 'FAIL|WORK' > log require 'thread' results = [] threads = [] for u in File.read("top100").split domain = u.sub(%r[http.*?://],"") threads << Thread.new do d2=domain worked = system "ping -t 3 #{d2}" results << [worked ? 'WORKED' : 'FAILED', d2] end end threads.each{|t| t.join} puts results.sort.map{|x| x.join("\t")}.join("\n")