I need to parse dhcpd.leases to store data in mysql
Simon Hobson
dhcp1 at thehobsons.co.uk
Fri Jun 30 08:34:09 UTC 2006
Sébastien CRAMATTE wrote:
>Well I would like to run a "tail -q -n+0 --follow=name --retry
>/var/lib/dhcpd3.leases" background process
>And get leases from this stream. By this mean I don't need to parse all
>file every times (I've got more than 2000 ips, leases are renewed every
>24H )
That makes sense, I haven't tried it, but I think
you'll find that you get the whole leases file
spittng out every hour as well as all the
intermediate updates.
>But with your code how can know if a lease was parsed before ? I don't
>want to store 2 times the same lease ? I should use "lease,starts,
>end, mac, state"as database unique keys ????
Well that's part of your database design !
We can offer suggestions, but you will have to
decide what will work for you - there is a
tradeoff between ease of data input, ease of data
extraction, and database size.
For ease of data entry, extract the lease data
(IP, Mac, UID, Start, End, State, anything else
you want to log). Then test if that same record
exists in the database, and if not, insert it
(probably with a timestamp for the record
insertion). This will get you a database in log
format with each lease that is ever issued - to
determine a lease state at any point in time you
will have to select the latest record that
matches the lease parameters you are looking for
as there are likely to be multiple overlapping
leases.
Alternatively, you can do more work at input
time. Extract the lease parameters as before, but
you work out if this is an extension of an
existing lease (IP, MAC, UID, etc match, but
start & end times are different but overlap with
existing database entry). In this case you update
the database record with the new expiry time.
Now you have a database that effectively contains
one record for each unique lease - so you can see
in one record the extent of the lease (start &
end times) but you don't have all the
intermediate data (all the lease renewals etc).
Simon
More information about the dhcp-users
mailing list