nix-config/hosts/dn42/routecount.rb

39 lines
787 B
Ruby
Executable File

#!/usr/bin/env ruby
INTERVAL = ENV['COLLECTD_INTERVAL'].to_i
HOSTNAME = ENV['COLLECTD_HOSTNAME']
def gather cmd
counts = {}
`#{cmd}`.lines.each do |l|
dev = nil
gw = nil
if l =~ / dev (\S+)/
dev = $1
end
if l =~ / via (\S+)/
gw = $1
end
if gw and dev
target = [gw, dev].join "%"
counts[target] = 0 unless counts.has_key? target
counts[target] += 1
end
end
counts
end
loop do
v4 = gather "ip -4 route"
v4.each do |target,count|
puts "PUTVAL \"#{HOSTNAME}/exec-routes4/routes-#{target}\" interval=#{INTERVAL} N:#{count}"
end
v6 = gather "ip -6 route"
v6.each do |target,count|
puts "PUTVAL \"#{HOSTNAME}/exec-routes6/routes-#{target}\" interval=#{INTERVAL} N:#{count}"
end
sleep INTERVAL
end