41 lines
814 B
Ruby
41 lines
814 B
Ruby
#!/usr/bin/env ruby
|
|
|
|
require 'date'
|
|
|
|
INTERVAL = 10
|
|
hostname = `hostname`.strip
|
|
STDOUT.sync = true
|
|
|
|
loop do
|
|
seen = {}
|
|
count = 0
|
|
|
|
starts = nil
|
|
ends = nil
|
|
ignore = false
|
|
|
|
IO::readlines("/var/lib/dhcp/dhcpd.leases").each do |line|
|
|
if line =~ /^lease (.+) \{/
|
|
addr = $1
|
|
ignore = seen[addr]
|
|
|
|
seen[addr] = true
|
|
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 (not ignore) and starts and ends and
|
|
starts <= now and ends >= now and
|
|
count += 1
|
|
end
|
|
end
|
|
end
|
|
puts "PUTVAL \"#{hostname}/exec-dhcpd/current_sessions-leases\" interval=#{INTERVAL} N:#{count}"
|
|
|
|
sleep INTERVAL
|
|
end
|