-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathcheck_soa.pl
More file actions
executable file
·82 lines (72 loc) · 1.3 KB
/
Copy pathcheck_soa.pl
File metadata and controls
executable file
·82 lines (72 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/perl -w
use strict;
use Net::DNS;
$|=1;
my $dom = $ARGV[0];
my $res = Net::DNS::Resolver->new(
defnames => 0
);
my $query=$res->query($dom,'NS');
my %servers;
if($query)
{
foreach my $rr (grep { $_->type eq 'NS' } $query->answer)
{
@{$servers{lc $rr->nsdname}}=();
};
}
else
{
print "Unknown domain: $dom\n";
exit 1;
};;
foreach my $server (keys %servers)
{
$query=$res->query($server,'A');
if($query)
{
foreach my $rr (grep { $_->type eq 'A' } $query->answer)
{
push @{$servers{$server}},$rr->address;
};
};
$query=$res->query($server,'AAAA');
if($query)
{
foreach my $rr (grep { $_->type eq 'AAAA' } $query->answer)
{
push @{$servers{$server}},$rr->address;
};
};
if(scalar @{$servers{$server}} ==0)
{
print "There is no address for $server\n";
}
else
{
foreach my $ip (@{$servers{$server}})
{
my $auth=Net::DNS::Resolver->new(
nameservers => [$ip],
recurse => 0,
defnames => 0,
tcp_timeout => 30,
udp_timeout => 10,
retry => 2,
);
$query=$auth->query($dom,'SOA');
if ($query)
{
foreach my $rr (grep { $_->type eq 'SOA' } $query->answer)
{
print "$server ($ip) has serial number ".$rr->serial;
};
}
else
{
print "There was no response from $server ($ip)";
};
print "\n";
};
};
};