diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 23:23:39 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 23:23:39 +0000 |
commit | 6175ca03be6d0d51359f9017123708987d0f5eb7 (patch) | |
tree | ecfcf6e79a21b1d25c3f6f42dd68ea0a14add89c /ruby_1_8_5/lib/ping.rb | |
parent | 80a56b248b2e9cfc95622aed98750df05a19f667 (diff) |
add tag v1_8_5_91v1_8_5_91
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_91@13046 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_5/lib/ping.rb')
-rw-r--r-- | ruby_1_8_5/lib/ping.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/ruby_1_8_5/lib/ping.rb b/ruby_1_8_5/lib/ping.rb new file mode 100644 index 0000000000..7728ece979 --- /dev/null +++ b/ruby_1_8_5/lib/ping.rb @@ -0,0 +1,53 @@ +# +# ping.rb -- check a host for upness +# + +require 'timeout' +require "socket" + +#= SYNOPSIS +# +# require 'ping' +# +# puts "'jimmy' is alive and kicking" if Ping.pingecho('jimmy', 10) +# +#= DESCRIPTION +# +# This module contains routines to test for the reachability of remote hosts. +# Currently the only routine implemented is pingecho(). +# +# 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 rsh(1), ftp(1), or telnet(1) to. +# +#= WARNING +# +# pingecho() may block for a long period if name resolution is slow. Require +# 'resolv-replace' to use non-blocking name resolution. +# +module Ping + + # 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. + 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 + module_function :pingecho +end + +if $0 == __FILE__ + host = ARGV[0] + host ||= "localhost" + printf("%s alive? - %s\n", host, Ping::pingecho(host, 5)) +end |