module Net::Fping

Public Class Methods

alive(hosts=[], **opts) click to toggle source
# File lib/net/fping.rb, line 22
def alive(hosts=[], **opts)
  return [] if hosts.empty?
  args = build_args(opts)
  %x[fping #{args} -a #{hosts.join(" ")} 2>/dev/null].split("\n");
end
alive_in_range(from, to, **opts) click to toggle source
# File lib/net/fping.rb, line 39
def alive_in_range(from, to, **opts)
  args = build_args(opts)
  %x[fping #{args} -ag #{from} #{to} 2>/dev/null].split("\n")
end
alive_in_subnet(subnet, **opts) click to toggle source
# File lib/net/fping.rb, line 34
def alive_in_subnet(subnet, **opts)
  args = build_args(opts)
  %x[fping #{args} -ag #{subnet} 2>/dev/null].split("\n")
end
build_args(opts) click to toggle source
# File lib/net/fping.rb, line 17
def build_args(opts)
  opts = default_options.merge(opts)
  "-c #{opts[:count]} -r #{opts[:retries]} -t #{opts[:timeout]} -i #{opts[:interval]} -b #{opts[:bytes]}"
end
dead(hosts=[], **opts) click to toggle source
# File lib/net/fping.rb, line 28
def dead(hosts=[], **opts)
  return [] if hosts.empty?
  args = build_args(opts)
  %x[fping #{args} -u #{hosts.join(" ")} 2>/dev/null].split("\n")
end
default_options() click to toggle source
# File lib/net/fping.rb, line 7
def default_options
  {
    retries: 3,
    count: 1,
    bytes: 56,
    interval: 25,
    timeout: 500
  }
end
latency(host, bytes, count, interval=1000) click to toggle source
# File lib/net/fping.rb, line 52
def latency(host, bytes, count, interval=1000)
  cmd = "fping -b #{bytes} -c #{count} -q -p #{interval} #{host}"
  Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
    # output is written to stderr for some reason
    ltc = stderr.read.gsub(/[%, ]/, "/")
    ltc = ltc.split(/.*loss\/=\/[0-9]+\/[0-9]+\/([0-9]+)\/\/\/min\/avg\/max\/=\/([0-9.]+)\/([0-9.]+)\/([0-9.]+)/)[-5..4]
          return ltc
  end
end
latency_simple(host) click to toggle source

Added defs for latency based metrics

# File lib/net/fping.rb, line 45
def latency_simple(host)
  bytes = 68
  count = 6
  interval = 1000
  %x[fping -b #{bytes} -c #{count} -q -p #{interval} #{host}]
end