class LogicBomb::Ping

Public Class Methods

new(ping:, tracert:, interval:, mailer:) click to toggle source
# File lib/logicbomb/ping.rb, line 5
def initialize(ping:, tracert:, interval:, mailer:)
  @ping = ping
  @tracert = tracert
  @interval = interval
  @mailer = mailer
end

Public Instance Methods

daemon() click to toggle source
# File lib/logicbomb/ping.rb, line 12
def daemon
  while true
    sleep @interval
    netconns = ping
    next if netconns.nil?
    mailer.mail netconns, tracert
    sleep 3600
  end
end

Private Instance Methods

ping() click to toggle source
# File lib/logicbomb/ping.rb, line 23
def ping
  @ping.each do |ip| 
    attempt1 = ping ip
    next if successful_ping?(ip)
    sleep 5
    attempt2 = ping ip
    return "#{attempt1}\n#{attempt2}" unless successful_ping?(attempt2)
  end
end
successful_ping?(stdout) click to toggle source
# File lib/logicbomb/ping.rb, line 41
def successful_ping?(stdout)
  stdout.include?(" 0% packet loss,")
end
tracert() click to toggle source
# File lib/logicbomb/ping.rb, line 33
def tracert
  @tracert.map {|ip| "#{ip}:\n" + `traceroute #{ip}`}.join('\n')
end