Зделал на perl.
#!/usr/bin/perl
open(InFile, "/var/log/dhcpd.leases") || die;
while ($line = <InFile>)
{
$lease = index ($line, "lease");
$hardware = index ($line, "hardware ethernet");
$ddns = index ($line, "ddns-fwd-name");
if ($lease == "-1"){
}
else
{
($namee, $ip) = split (" ", $line);
}
if ($hardware == "-1"){
}
else
{
($nameee, $ipp, $mak) = split (" ", $line);
chop ($mak);
}
if ($ddns == "-1"){
}
else
{
($nam, $ippp, $makk, $name) = split (" ", $line);
chop ($name);
$lenname = length ($name);
$n = substr ($name, "1" , $len-2);
}
if ($ip gt "")
{
if ($mak gt "")
{
if ($lenname > "0")
{
print ($ip, " ", $mak, " ", $n, "\n");
$lenname = "";
$ip = "";
$mak = "";
$n = "";
}
}
}
}
close ( InFile );
вывод
172.16.0.10 xxx:xxx:xxx:a1:e5:b3 user-pk.example.com
172.16.0.56 xxx:xxx:xxx:27:a1:01 DIR-320.example.com
Или так
#!/usr/bin/perl
open(InFile, "/var/log/dhcpd.leases") || die;
while ($line = <InFile>)
{
($n1, $n2, $n3, $n4) = split (" ", $line);
if ($n1 eq "lease")
{
$ip=$n2;
}
if ($n1 eq "starts")
{
$sdate=$n3;
}
if ($n1 eq "ends")
{
$edate=$n3;
}
if ($n1 eq "hardware")
{
$mak=$n3;
}
if ($n2 eq "ddns-fwd-name")
{
$name=$n4;
}
if ($ip gt "" & $sdate gt "" & $edate gt "" & $mak gt "" & $name gt "")
{
chop ($mak);
chop ($name);
$lenname = length ($name);
$n = substr ($name, "1" , $len-2);
print $ip , " ", $sdate, " ", $edate, " ", $mak, " ", $n, " ", "\n";
$sdate="";
$edate="";
$mak="";
$name="";
$n="";
$lenname="";
}
}
close ( InFile );
172.16.0.10 2011/06/10 2011/06/11 xxx:xxx:xxx:a1:e5:b3 user-pk.example.com
172.16.0.56 2011/06/10 2011/06/11 xxx:xxx:xxx:27:a1:01 DIR-320.example.com
172.16.0.56 2011/06/11 2011/06/11 xxx:xxx:xxx:27:a1:01 DIR-320.example.com
Ищу дополнительный заработок (удалёнка).
Пьянка без секса – признак алкоголизма.