# vim: ft=ruby class Network < Worker require 'open3' def mainloop() self.write "checking..." while true do self.write network_status sleep(10) end end def network_status hosts = @my_config['hosts'] Open3.popen2("fping", "-u", *hosts) do |i,o,t| hosts_down = o.each_line.count hosts_up = hosts.count - hosts_down if hosts_down == 0 fg_colour = "ok_colour" elsif hosts_down == hosts.count fg_colour = "crit_colour" else fg_colour = "warn_colour" end @rstr = "%%{FC{%s}}%s/%s%%{F-}" % [ fg_colour, hosts_up, hosts.count ] end return @rstr end end Modules.add("network", "Network")