network/salt/collectd/dhcpcount.rb

32 lines
872 B
Ruby

#!/usr/bin/env ruby
require 'date'
hostname = `hostname`.strip
loop do
starts = nil
ends = nil
count = 0
IO::readlines("/var/lib/dhcp/dhcpd.leases").each do |line|
if line =~ /^lease/
starts = nil
ends = nil
elsif line =~ /starts \d+ (.+?);/
starts = DateTime.parse $1
elsif line =~ /ends \d+ (.+?);/
ends = DateTime.parse $1
elsif line =~ /^\}/
now = DateTime.now
if starts and ends and
starts <= now and ends >= now
count += 1
end
end
end
puts "PUTVAL #{hostname}/dhcpd/leases N:#{count}"
sleep 10
end