#!/usr/bin/perl
use strict;
use warnings;
use Net::DNS;
use Net::IP;
die "Usage: perl $0 [site_name|IP Address]\n" unless(scalar $ARGV[0]);
my $site;
my $ip_address;
if($ARGV[0] =~/^(\d+\.){3}\d+$/){
$ip_address = new Net::IP($ARGV[0],4);
} else {
$site = $ARGV[0];
$site =~ s
$site =~ s/www\.//;
print "Not a valid site name format, Try again\n" and exit unless($site =~ /^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\.)+[A-Za-z]{2,6}$/);
}
my $res = Net::DNS::Resolver->new;
if($site){
show_ip();
show_ns();
show_mx();
show_soa();
}
show_ip_lookup() if($ip_address);
sub show_ip {
my $query = $res->search($site);
if ($query) {
print "\nIP Address(es):\n";
foreach my $rr ($query->answer) {
next unless $rr->type eq "A";
print $rr->address, "\n";
}
}
else {
warn "Query failed: ", $res->errorstring;
}
}
sub show_ns {
my $reply = $res->query("$site", "NS");
if ($reply) {
print "\nName Server(s)\n";
foreach my $rr (grep { $_->type eq "NS" } $reply->answer) {
print $rr->nsdname, "\n";
}
}
else {
warn "query failed: ", $res->errorstring, "\n";
}
}
sub show_mx {
my @mx = mx($res, $site);
if (@mx) {
print "\nMail Server(s)\n";
foreach my $rr (@mx) {
print $rr->preference, " ", $rr->exchange, "\n";
}
} else {
warn "Can\'t find MX records for $site: ", $res->errorstring, "\n";
}
}
sub show_soa {
my $reply = $res->query("$site", "SOA");
if ($reply) {
print "\nSOA Record(s)\n";
($reply->answer)[0]->print;
} else {
print "query failed: ", $res->errorstring, "\n";
}
}
sub show_ip_lookup {
my $answer = $res->query($ip_address->reverse_ip(),\'PTR\');
my $namer = $answer->{\'answer\'}[0];
print "Reverse lookup: $namer->{\'ptrdname\'}\n" if(defined $namer->{\'ptrdname\'});
}
- See more at: http://www.aliencoders.org/forum/Thread-how-to-get-dns-information-using-perl-script#sthash.c4KmsWCr.dpuf
Комментариев нет:
Отправить комментарий