RubyでIP Messanger
IP Messanger のv2.07がリリースされました。なんと6年振の更新だそうです。バルーンで通知してくれたり、ちょっぴりカッコよくなっています。
http://www.forest.impress.co.jp/docs/news/20100421_362762.html
IP Messanger で監視のアラートも悪くないなぁ、と思ったので、ちょっと遊んでみました。
#!/usr/bin/ruby require "socket" require "kconv" require 'ping' def ping(host,cnt=1) Ping.pingecho(host, cnt) ? [true, host] : [false, host] end class IPMessanger def initialize(user) @port, @version, @command = 2425, 1, 32 @sock = UDPsocket.new @user = user @num = $$ || 0 end def sendmsg(host, msg) @num += 1 str = sprintf("%d:%d:%s:%s:%d:%s", @version, @num, @user, host, @command, msg.tosjis) @sock.send(str, 0, host, @port) end end # ipmessanger msg_server = "192.168.1.3" ip = IPMessanger.new("alert") interval = 300 hosts = [ "192.168.1.3", "192.168.1.101", "192.168.1.102", "192.168.1.103", "192.168.1.104", ] loop { threads = [] hosts.each {|host| threads << Thread.new { ping(host) } } threads.each {|t| r = t.join.value ip.sendmsg(msg_server, "host down! - #{r[1]}") unless r[0] } sleep interval }