use warnings; use strict; use Net::DNS; use Data::Dumper::Simple; my $dnsserver; my @resolver; @resolver = qw(192.168.10.98); foreach $dnsserver (@resolver) { print "\n\nValidating Entries against $dnsserver\n"; my $resolver = Net::DNS::Resolver->new( nameservers =>$dnsserver, retry => 2, #recurse => 0, #debug => 1, ); my $ip = "192.168.50.70"; my $target_ip = join('.', reverse split(/\./, $ip)).".in-addr.arpa"; my $query = $resolver->query($target_ip, 'PTR'); my $reply = $resolver->search("garytest.fedlab.local",'A'); warn Dumper(\$query, \$reply); if ($query) { # Print total count Here before Dispalying # Print "Total # of Hostnames found: ",(code) , "\n"; print "\n\nHost names found......\n"; foreach my $answer ($query->answer) { my $value=$answer->rdatastr; chop $value if ($value =~/.$/); print "\t", $value, "\n"; } } else { print "\tReverse Lookup failed: ", $resolver->errorstring, "\n"; } if ($reply) { # Print total count Here before Dispalying # Print "Total # of IP found: ",(code) , "\n"; # print "\n\nIP Address Found found......\n"; foreach my $rr ($reply->answer) { print "\t", $rr->address, "\n"; } } else { warn "\tForward Lookup Failed: ", $resolver->errorstring, "\n"; } } #### Z:\>perl net_dns.pl Validating Entries against 192.168.10.98 $query = bless( { 'replyfrom' => '192.168.10.98', 'status' => 34176, 'authority' => [], 'answer' => [ bless( { 'ptrdname' => bless( { 'label' => [ 'garytest_dup3' ] }, 'Net::DNS::DomainName1035' ), 'owner' => bless( { 'label' => [], 'origin' => bless( { 'label' => [ '70', '50', '168', '192', 'in-addr', 'arpa' ] }, 'Net::DNS::DomainName' ) }, 'Net::DNS::DomainName1035' ), 'rdlength' => 15, 'class' => 1, 'type' => 12, 'ttl' => 3600 }, 'Net::DNS::RR::PTR' ), bless( { 'rdlength' => 23, 'owner' => bless( { 'label' => [], 'origin' => $query->{'answer'}[0]{'owner'}{'origin'} }, 'Net::DNS::DomainName1035' ), 'ttl' => 3600, 'class' => 1, 'type' => 12, 'ptrdname' => bless( { 'label' => [ 'garytest', 'fedlab', 'local' ] }, 'Net::DNS::DomainName1035' ) }, 'Net::DNS::RR::PTR' ), bless( { 'rdlength' => 16, 'owner' => bless( { 'label' => [], 'origin' => $query->{'answer'}[0]{'owner'}{'origin'} }, 'Net::DNS::DomainName1035' ), 'ttl' => 3600, 'type' => 12, 'class' => 1, 'ptrdname' => bless( { 'origin' => bless( { 'label' => [ 'fedlab', 'local' ] }, 'Net::DNS::DomainName' ), 'label' => [ 'garytest_dup2' ] }, 'Net::DNS::DomainName1035' ) }, 'Net::DNS::RR::PTR' ), bless( { 'ptrdname' => bless( { 'origin' => $query->{'answer'}[2]{'ptrdname'}{'origin'}, 'label' => [ 'garytest_dup4' ] }, 'Net::DNS::DomainName1035' ), 'ttl' => 3600, 'class' => 1, 'type' => 12, 'rdlength' => 16, 'owner' => bless( { 'origin' => $query->{'answer'}[0]{'owner'}{'origin'}, 'label' => [] }, 'Net::DNS::DomainName1035' ) }, 'Net::DNS::RR::PTR' ), bless( { 'ttl' => 3600, 'class' => 1, 'type' => 12, 'rdlength' => 14, 'owner' => bless( { 'origin' => $query->{'answer'}[0]{'owner'}{'origin'}, 'label' => [] }, 'Net::DNS::DomainName1035' ), 'ptrdname' => bless( { 'label' => [ 'garytest_dup' ] }, 'Net::DNS::DomainName1035' ) }, 'Net::DNS::RR::PTR' ) ], 'question' => [ bless( { 'qclass' => 1, 'qname' => bless( { 'label' => [ '70', '50', '168', '192', 'in-addr', 'arpa' ] }, 'Net::DNS::DomainName1035' ), 'qtype' => 12 }, 'Net::DNS::Question' ) ], 'count' => [ 1, 5, 0, 0 ], 'additional' => [], 'id' => 55726, 'xedns' => bless( { 'owner' => bless( { 'label' => [] }, 'Net::DNS::DomainName1035' ), 'type' => 41 }, 'Net::DNS::RR::OPT' ), 'replysize' => 188 }, 'Net::DNS::Packet' ); $reply = bless( { 'replysize' => 87, 'xedns' => bless( { 'owner' => $query->{'xedns'}{'owner'}, 'type' => 41 }, 'Net::DNS::RR::OPT' ), 'additional' => [], 'id' => 40872, 'count' => [ 1, 3, 0, 0 ], 'question' => [ bless( { 'qtype' => 1, 'qname' => bless( { 'label' => [ 'garytest', 'fedlab', 'local' ] }, 'Net::DNS::DomainName1035' ), 'qclass' => 1 }, 'Net::DNS::Question' ) ], 'authority' => [], 'answer' => [ bless( { 'address' => '+¿2G', 'ttl' => 3600, 'class' => 1, 'type' => 1, 'rdlength' => 4, 'owner' => bless( { 'origin' => bless( { 'label' => [ 'garytest', 'fedlab', 'local' ] }, 'Net::DNS::DomainName' ), 'label' => [] }, 'Net::DNS::DomainName1035' ) }, 'Net::DNS::RR::A' ), bless( { 'type' => 1, 'class' => 1, 'ttl' => 3600, 'owner' => bless( { 'origin' => $reply->{'answer'}[0]{'owner'}{'origin'}, 'label' => [] }, 'Net::DNS::DomainName1035' ), 'rdlength' => 4, 'address' => '+¿2F' }, 'Net::DNS::RR::A' ), bless( { 'rdlength' => 4, 'owner' => bless( { 'origin' => $reply->{'answer'}[0]{'owner'}{'origin'}, 'label' => [] }, 'Net::DNS::DomainName1035' ), 'ttl' => 3600, 'type' => 1, 'class' => 1, 'address' => '+¿2H' }, 'Net::DNS::RR::A' ) ], 'status' => 34176, 'replyfrom' => '192.168.10.98' }, 'Net::DNS::Packet' ); Host names found...... garytest_dup3 garytest.fedlab.local garytest_dup2.fedlab.local garytest_dup4.fedlab.local garytest_dup IP Address Found found...... 192.168.50.71 192.168.50.70 192.168.50.72