# = ping.rb: Check a host for upness
# Author:: Yukihiro Matsumoto
# Documentation:: Konrad Meyer
# Performs the function of the basic network testing tool, ping.
# 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.
# puts "'jimmy' is alive and kicking" if Ping.pingecho('jimmy', 10)
# 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
# Ping.pingecho "google.com", 10, 80
def pingecho(host, timeout=5, service="echo")
s = TCPSocket.new(host, service)
rescue Errno::ECONNREFUSED
rescue Timeout::Error, StandardError
module_function :pingecho
printf("%s alive? - %s\n", host, Ping::pingecho(host, 5))