perl dns record check

perl dns record check,第1张

概述说明: 主要用于获取及检查DNS server 信息,确保其安全可靠运行。 根据使用需求可以调整sub 函数来取得想要的信息。   #!/usr/bin/perl  use strict;    use Net::DNS;    #my $domain=$ARGV[0];  #my $dns_server=
 说明: 主要用于获取及检查DNS server 信息,确保其安全可靠运行。 根据使用需求可以调整sub 函数来取得想要的信息。 

 

  @H_403_13@#!/usr/bin/perl     use strict;     @H_403_13@     use Net::DNS;     @H_403_13@     #my $domain=$ARGV[0];     @H_403_13@#my $dns_server=$ARGV[1];     my $domain="Google.com"    @H_403_13@my $dns_server="ns2.Google.com"         @H_403_13@#PRES();     Separate ("List A_Record");     @H_403_13@A_Record();          @H_403_13@Separate ("List SOA_Record");     SOA_Record();     @H_403_13@     #Check_open_dns();     @H_403_13@Separate ("List MX_Record");     MX_Records();     @H_403_13@     Separate ("List NS_Record");     @H_403_13@NS_Records();          @H_403_13@Separate ("List SPF_Record");     SPF_Record();     @H_403_13@     Separate ("List AXFR_Record");     @H_403_13@#AXFR();          @H_403_13@sub Separate {             my $key=shift;     @H_403_13@        print "\n"            print "--------------------- $key ----------------------------\n\n"    @H_403_13@         @H_403_13@sub A_Record {             my @hosts=qw(www ftp mail dns vpn sslvpn);     @H_403_13@        my $res = Net::DNS::Resolver->new;             foreach my $host (@hosts) {     @H_403_13@                my $query_A=$res->search("$host\.$domain");          @H_403_13@                if ($query_A) {                             foreach my $rr ($query_A->answer) {     @H_403_13@                        next unless $rr->type eq "A"                            print "$host\.$domain: "    @H_403_13@                        print $rr->address, "\n"                    }     @H_403_13@                } else {                             warn "Unable to obtain A record : ", $res->errorstring, "\n"    @H_403_13@                }             }     @H_403_13@         @H_403_13@     sub AXFR {     @H_403_13@         print "AXFR records :\n"             my $res  = Net::DNS::Resolver->new;     @H_403_13@         $res->nameservers("$dns_server");              my @zone = $res->axfr("$domain");     @H_403_13@         foreach my $rr (@zone) {                       $rr->print;     @H_403_13@         }         @H_403_13@     sub PRES {     @H_403_13@        use Net::DNS::Resolver::Recurse;             my $pres = Net::DNS::Resolver::Recurse->new;     @H_403_13@        $pres->tcp_timeout(2);             $pres->udp_timeout(2);     @H_403_13@        $pres->deBUG(1);             my @root_ns = map $_ . '.root-servers.net''a'..'m'    @H_403_13@        $pres->hints(@root_ns);             my $packet = $pres->query_dorecursion($domain, "NS");     @H_403_13@        print "Parent nameservers:\n"            foreach my $pns ($packet->additional) {     @H_403_13@                   print $pns->name,"(", $pns->rdatastr,")\n"            }     @H_403_13@         @H_403_13@sub SOA_Record {             print "SOA record: \n"    @H_403_13@        my $res=Net::DNS::Resolver->new;             my $soa_query = $res->query($domain, 'SOA');     @H_403_13@        if ($soa_query) {                     ($soa_query->answer)[0]->print, "\n"    @H_403_13@        }             else  {     @H_403_13@            print "SOA record fail. Result:\n",$res->errorstring;             }     @H_403_13@         @H_403_13@sub Check_open_dns {             print "Checking recursion (open dns server)...\n"    @H_403_13@        my @nservers = qw(ns.xtera-ip.com.cn);             my $rres = Net::DNS::Resolver->new(     @H_403_13@                nameservers => [@nservers],                     recurse     => 1,     @H_403_13@                deBUG       => 0,                     );     @H_403_13@        my $dest;             my $r_query = $rres->query($dest,"A");     @H_403_13@        my @dest_ips=();             if ($r_query) {     @H_403_13@                foreach my $rrr ($r_query->answer) {                             next unless $rrr->type eq "A"    @H_403_13@                        print "Recursive lookups are ENABLED in ",$rres->nameserver(),": ",$rrr->address, "\n"                    }     @H_403_13@        } else {                     warn "OK. Recursive querIEs are not answered.  Result: ", $rres->errorstring, "\n"    @H_403_13@        }         @H_403_13@     sub MX_Records {     @H_403_13@        print "MX Records is :\n"            my $res  = Net::DNS::Resolver->new;     @H_403_13@        my @mx   = mx($res, $domain);             if (@mx) {     @H_403_13@               foreach my $rr (@mx) {                         print $rr->preference, " ", $rr->exchange, "\n"    @H_403_13@              }             } else {     @H_403_13@               warn "Can't find MX records for $domain: ""\n"            }     @H_403_13@         @H_403_13@sub NS_Records {             print "NS Records : \n"    @H_403_13@        my $res   = Net::DNS::Resolver->new;             my $query = $res->query("$domain""NS");     @H_403_13@        if ($query) {                 foreach my $rr (grep { $_->type eq 'NS' } $query->answer) {     @H_403_13@                    print $rr->nsdname, "\n"                }     @H_403_13@        }             else {     @H_403_13@            warn "query Failed: ""\n"            }     @H_403_13@         @H_403_13@sub Reverse_MX {             my $ip;     @H_403_13@        print "\nChecking Reverse MX Records ...\n"            my $mx_res = Net::DNS::Resolver->new();     @H_403_13@        my $mxanswer = $mx_res->query($ip->reverse_ip(),'PTR');             if($mxanswer) {     @H_403_13@              foreach my $mrr (grep {$_->type eq "PTR" } $mxanswer->answer) {                    print $ip->reverse_ip()," PTR ",$mrr->ptrdname,"\n"    @H_403_13@               }          @H_403_13@              } else {     @H_403_13@          print "MX records not found\n"             }     @H_403_13@         @H_403_13@sub SPF_Record {             print "SPF Records is : \n"    @H_403_13@        #my $domain=shift;             my $res=Net::DNS::Resolver->new();     @H_403_13@        my $spf_query=$res->query($domain,"TXT");             if ($spf_query) {     @H_403_13@                foreach my $rr ($spf_query->answer) {                             print "SPF record ok: ",$rr->txtdata, "\n"    @H_403_13@                }             }     @H_403_13@        else {                     warn "unable to get SPF record : ""\n";       }     @H_403_13@  
脚本输出结果:root@ubuntu:~/script# perl dns_check_Google.pl--------------------- List A_Record ----------------------------www.Google.com: 74.125.128.99www.Google.com: 74.125.128.103www.Google.com: 74.125.128.104www.Google.com: 74.125.128.105www.Google.com: 74.125.128.106www.Google.com: 74.125.128.147Unable to obtain A record : NXDOMAINmail.Google.com: 74.125.128.17mail.Google.com: 74.125.128.18mail.Google.com: 74.125.128.19mail.Google.com: 74.125.128.83Unable to obtain A record : NXDOMAINvpn.Google.com: 64.9.224.68vpn.Google.com: 64.9.224.69vpn.Google.com: 64.9.224.70Unable to obtain A record : NXDOMAIN--------------------- List SOA_Record ----------------------------SOA record:Google.com.     86050   IN      SOA     ns1.Google.com. dns-admin.Google.com. (                                        2013015000      ; Serial                                        7200    ; Refresh                                        1800    ; Retry                                        1209600 ; Expire                                        300 )   ; Minimum TTL--------------------- List MX_Record ----------------------------MX Records is :10 aspmx.l.Google.com20 alt1.aspmx.l.Google.com30 alt2.aspmx.l.Google.com40 alt3.aspmx.l.Google.com50 alt4.aspmx.l.Google.com--------------------- List NS_Record ----------------------------NS Records :ns4.Google.comns1.Google.comns2.Google.comns3.Google.com--------------------- List SPF_Record ----------------------------SPF Records is :SPF record ok: v=spf1 include:_netblocks.Google.com include:_netblocks6.Google.com ip4:216.73.93.70/31 ip4:216.73.93.72/31 ~all--------------------- List AXFR_Record ----------------------------
总结

以上是内存溢出为你收集整理的perl dns record check全部内容,希望文章能够帮你解决perl dns record check所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1282999.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存