Module: Ping

Defined in:
lib/ping.rb

Overview

Ping contains routines to test for the reachability of remote hosts. Currently the only routine implemented is pingecho().

Ping.pingecho uses a TCP echo (not an ICMP echo) to determine if the remote host is reachable. This is usually adequate to tell that a remote host is available to telnet, ftp, or ssh to.

Warning: Ping.pingecho may block for a long time if DNS resolution is slow. Requiring 'resolv-replace' allows non-blocking name resolution.

Usage:

require 'ping'

puts "'jimmy' is alive and kicking" if Ping.pingecho('jimmy', 10)

Instance Method Summary collapse

Instance Method Details

#pingecho(host, timeout = 5, service = "echo")) ⇒ Object

Return true if we can open a connection to the hostname or IP address host on port service (which defaults to the "echo" port) waiting up to timeout seconds.

Example:

require 'ping'

Ping.pingecho "google.com", 10, 80

44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/ping.rb', line 44

def pingecho(host, timeout=5, service="echo")
  begin
    timeout(timeout) do
  s = TCPSocket.new(host, service)
  s.close
    end
  rescue Errno::ECONNREFUSED
    return true
  rescue Timeout::Error, StandardError
    return false
  end
  return true
end