따라서 otter book에는 주어진 호스트 이름에 대해 동일한 주소를 반환하는지 반복적으로 확인하기위한 작은 스크립트 (173 페이지 참조)가 있습니다. 그러나이 책에 제공된 솔루션은 호스트에 정적 IP 주소가있는 경우에만 작동합니다. 여러 개의 주소가 연관된 호스트와 작동하게하려면이 스크립트를 어떻게 작성합니까? 여기 perl과 Net :: DNS를 사용하는 DNS 검사
코드입니다 :#!/usr/bin/perl
use Data::Dumper;
use Net::DNS;
my $hostname = $ARGV[0];
# servers to check
my @servers = qw(8.8.8.8 208.67.220.220 8.8.4.4);
my %results;
foreach my $server (@servers) {
$results{$server}
= lookup($hostname, $server);
}
my %inv = reverse %results; # invert results - it should have one key if all
# are the same
if (scalar keys %inv > 1) { # if it has more than one key
print "The results are different:\n";
print Data::Dumper->Dump([ \%results ], ['results']), "\n";
}
sub lookup {
my ($hostname, $server) = @_;
my $res = new Net::DNS::Resolver;
$res->nameservers($server);
my $packet = $res->query($hostname);
if (!$packet) {
warn "$server not returning any data for $hostname!\n";
return;
}
my (@results);
foreach my $rr ($packet->answer) {
push (@results, $rr->address);
}
return join(', ', sort @results);
}