parsed ping

Ruby code posted by ericnils
created at 14 Sep 00:03, updated at 22 Oct 14:49

Edit | Back
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/ruby1.9.1
beginning = Time.now

#ping -c <number of pings to send> -W <seconds to wait for response>
ping_result = `ping -c 1 -W 1 #{ARGV[0]}`

if $?.success?
#  puts "Ping was successful"
else
  puts "Ping was not successful"
end

ping_result.each_line do |line| 
  if line =~ /bytes from/ 
    split_on_space = line.split " "
    # example line with labeled split_on_space array indexes:
    #|0 |1    |2   |3          |4         |5      |6        |7
    # 64 bytes from 10.1.1.125: icmp_seq=1 ttl=125 time=52.2 ms
    if split_on_space[1] == "bytes" then bytes = split_on_space[0].to_i end
    if split_on_space[6].split("=")[0] == "time" then time_ms = split_on_space[6].split("=")[1].to_f end
    puts "#{bytes} bytes transmitted in #{time_ms} ms"
  end
end

puts "Time elapsed: #{(Time.now - beginning) * 1000} ms"
855 Bytes in 3 ms with coderay