#!/usr/bin/perl use strict; my %rdns; local $/ = undef; open CONFIGXML, "-|" or do { exec ($ENV{CURL}, qw(-n -s -f), "-F", "Submit=Download", "$ENV{PROTOCOL}://$ENV{MACHINE}/diag_backup.php"); }; my $xml = ; close CONFIGXML; while ($xml =~ m{\s*(.*?)\s*
(.*?)
}gi) { $rdns{$2} = $1 if !exists $rdns{$2}; } while ($xml =~ m{(.*?)\s*(.*?)\s*(.*?)}gi) { $rdns{$3} = "$1.$2" if !exists $rdns{$3}; } while ($xml =~ m{.*?\s*(.*?)\s*(.*?)}gi) { $rdns{$1} = $2 if !exists $rdns{$1}; } open DHCPDLEASES, "-|" or do { exec ($ENV{CURL}, qw(-n -s -f), "-F", "txtCommand=cat /var/db/dhcpd.leases", "$ENV{PROTOCOL}://$ENV{MACHINE}/exec.php"); }; my $leases = ; close DHCPDLEASES; my %entities = ("amp" => "&", "quot" => "\"", "lt" => "<", "gt" => ">", ); $leases =~ s{^.*?
.* cat /var/db/dhcpd.leases\n(.*)<\/pre>.*$}{$1}s;
$leases =~ s/&(\w+);/$entities{$1}/ge;
while ($leases =~ m{\nlease (\S+?) {(.*?)}}gs) {
    my $ip = $1;
    if (!exists $rdns{$ip} &&
	$2 =~ /client-hostname \"(.*?)\"/m) {
	$rdns{$ip} = $1;
    }
}

print map { /^\d+\.\d+\.\d+\.\d+$/ ? "$_ $rdns{$_}\n" : "" } sort keys %rdns;