Re: problems parsing a DHCP.leases file.
- From: "DJ Stunks" <DJStunks@xxxxxxxxx>
- Date: 27 Feb 2006 10:17:39 -0800
Hans Meier wrote:
Here is a way to process one lease { }
after another, with the possibility to extract every field you want.
A similar approach using Text::Balanced:
C:\tmp>cat tmp.pl
#!/usr/bin/perl
use strict;
use warnings;
use Text::Balanced qw{ extract_bracketed };
use Regexp::Common qw{ net };
$/ = '';
my @leases;
while ( my $lease = <DATA> ) {
my ($extracted,$remainder,$skipped)
= extract_bracketed($lease,'{}','lease [.\d]+ ');
my ($ip) = $skipped =~ m{ lease \s+ ($RE{net}{IPv4}) }x;
my ($hostname) = $extracted =~ m{ client-hostname \s+ "([^"]+)" }x;
push @leases,{ ip => $ip, hostname => $hostname };
}
use Data::Dumper;
print Dumper(\@leases);
__DATA__
lease 10.10.97.207 {
starts 2 2005/12/20 16:10:51;
ends 2 2005/12/20 20:10:51;
tstp 2 2005/12/20 20:10:51;
binding state free;
hardware ethernet 00:0b:97:2b:ea:fe;
uid "\001\000\013\227+\352\376";
client-hostname "HOST1";
}
lease 10.10.97.208 {
starts 2 2005/12/20 16:10:51;
ends 2 2005/12/20 20:10:51;
tstp 2 2005/12/20 20:10:51;
binding state free;
hardware ethernet 00:0b:97:2b:ea:fe;
uid "\001\000\013\227+\352\376";
client-hostname "HOST2";
}
C:\tmp>tmp.pl
$VAR1 = [
{
'ip' => '10.10.97.207',
'hostname' => 'HOST1'
},
{
'ip' => '10.10.97.208',
'hostname' => 'HOST2'
}
];
-jp
.
- References:
- Re: problems parsing a DHCP.leases file.
- From: Hans Meier
- Re: problems parsing a DHCP.leases file.
- Prev by Date: Re: file access dates
- Next by Date: Re: file access dates
- Previous by thread: Re: problems parsing a DHCP.leases file.
- Next by thread: Net::ARP On Windows
- Index(es):
Relevant Pages
|
|