Code :
#!/usr/bin/perl use strict; use warnings; my ($in, $out); my ($ip, $mac); my $macpattern = "(([0-9A-Fa-f]{2}:){5}[0-9A-Fa-f]{2})"; # ouvre le fichier $in en lecture seule open($in, "<", 'leases.in') or die "cannot open $in for reading: $!"; my $inleasebloc = 0; # tant que lecture ligne fichier while (<$in> ) { if (not $inleasebloc) { # si adresse IP dans la ligne, capture l'IP if (/^lease\ s+ (\d+\.\d+\.\d+\.\d+ )\ s+\ {/o ) { $inleasebloc = 1; $ip = $1; } } else { if (/^lease\ s+ (\d+\.\d+\.\d+\.\d+ )\ s+\ {/o ) { # On pourrait émettre un message d'erreur comme quoi le bloc n'est pas fermé correctement open($out, ">", 'leases.out') or die "cannot open $out for writing: $!"; } $mac = "unknown" unless defined($mac); print $out "IP: $ip - MAC: $mac\n"; $inleasebloc = 1; $ip = $1; } if (/hardware\ s+ethernet\ s+ $macpattern\ s*;/o ) { $mac = $1; } $inleasebloc = 0; # ouvre en écriture le fichier $out (s'il n'existe pas, il est créé) open($out, ">", 'leases.out') or die "cannot open $out for writing: $!"; } $mac = "unknown" unless defined($mac); print $out "IP: $ip - MAC: $mac\n"; } } }
|