#!/usr/bin/ruby -Ilib/ # # Usage information at the end of the script. # require 'getoptlong' require 'custodian/util/ping' # # Options set by the command-line. # help = false manual = false opts = GetoptLong.new( ['--help', '-h', GetoptLong::NO_ARGUMENT], ['--manual', '-m', GetoptLong::NO_ARGUMENT] ) begin opts.each do |opt, _arg| case opt when '--help' then help = true when '--manual' then manual = true end end rescue => err # any errors, show the help warn err.to_s help = true end # # Show the help information. # if manual || help DATA.read.split("\n").each do |line| puts Regexp.last_match(1).dup if line =~ /^# ?(.*)/ end exit 0 end # # Get the address to ping. # hostname = ARGV.shift # # Abort if we don't have a hostname # if hostname.nil? puts "Usage: #{$PROGRAM_NAME} hostname" exit 1 end # # Create the object # helper = Custodian::Util::Ping.new(hostname) # # Ping the host, via the helper # if helper.run_ping puts "#{hostname} - #{helper.address} - is alive." exit 0 else exit 1 end __END__ # # NAME # multi-ping - IPv4 and IPv6 ping tool # # # SYNOPSIS # multi-ping [ -h | --help ] [-m | --manual] hostname # # # OPTIONS # # -h, --help Show a help message, and exit. # # -m, --manual Show this manual, and exit. # # # ABOUT # # The multi-ping tool is designed to be IPv4/IPv6-agnostic ping tool, # which removes the need to know if you're pinging an IPv4 host or an # IPv6 host. # # The tool works by resolving the hostname specified upon the command line, # and invoking "ping" or "ping6" upon the result - using the correct one for # the address family which has been returned. # # # AUTHOR # # Steve Kemp #