I need to parse dhcpd.leases to store data in mysql
markd
mark at immermail.com
Fri Jun 30 01:46:45 UTC 2006
Sébastien CRAMATTE wrote:
>> $/ = "}\n";
>> while (<>) {
>> ($starts) = /starts \d ([^;]+)/;
>> ($ends) = /starts \d ([^;]+)/;
>> ($state) = /binding state ([^;]+)/;
>> ($mac) = /hardware ethernet ([^;]+)/;
>>
>> $insert->execute($starts, $ends, $state, $mac);
>> }
>>
>
> But how do you parse the lease ?
> Could you give me a complete example / script ?
I'm not sure I understand the question. The code above
is parsing the lease. But "parse lease" is sort of vague.
What data do you want to get out of the lease? What format
do you want it in?
Here's a complete script that prints IP, MAC and start time
of active leases:
#!/usr/bin/perl
sub parse_lease {
local $_ = shift;
my %l;
($l{ipaddr}) = /lease (\S+)/;
($l{starts}) = /starts \d ([^;]+)/;
($l{mac}) = /hardware ethernet ([^;]+)/;
($l{state}) = /binding state ([^;]+)/;
return \%l;
}
open(LEASES, "dhcpd.leases");
$/ = "}\n";
while (<LEASES>) {
my $lease = parse_lease($_);
next unless $lease->{state} eq 'active';
printf "ip=%s mac=%s starts=%s\n",
$lease->{ipaddr}, $lease->{mac}, $lease->{starts};
}
mark
More information about the dhcp-users
mailing list