32 lines
656 B
Ruby
Executable File
32 lines
656 B
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
require 'csv'
|
|
|
|
INTERVAL = 60
|
|
TIMEOUT = ARGV[0].to_i # TODO: now unused
|
|
hostname = CSV::readlines("/proc/sys/kernel/hostname").join.strip
|
|
STDOUT.sync = true
|
|
|
|
loop do
|
|
seen = {}
|
|
count = 0
|
|
now = Time.now.to_i
|
|
|
|
CSV::readlines("/var/lib/kea/kea-leases4.csv", headers: true).each do |rec|
|
|
h = rec.to_h
|
|
addr = h["hwaddr"]
|
|
next unless addr
|
|
last = h["expire"].to_i
|
|
elapsed = now - last
|
|
next if elapsed >= TIMEOUT
|
|
|
|
unless seen[addr]
|
|
count += 1
|
|
seen[addr] = true
|
|
end
|
|
end
|
|
puts "PUTVAL \"#{hostname}/exec-dhcpd/current_sessions-leases\" interval=#{INTERVAL} N:#{count}"
|
|
|
|
sleep INTERVAL
|
|
end
|