Как выполнить обратный поиск DNS, то есть как я могу разрешить IP-адрес его имени DNS на Perl?Обратный поиск DNS в perl
ответ
gethostbyaddr и подобные звонки. См.
Может быть проще, но для IPv4, если вы можете выполнять обычные поисковые запросы DNS, вы всегда можете самостоятельно построить обратный запрос. Для адреса IPv4 A.B.C.D найдите любые записи PTR в D.C.B.A.in-addr.arpa. Для IPv6 вы берете 128 гектаров и переворачиваете их и добавляете ipv6.arpa. и делать то же самое.
Если gethostbyaddr не соответствует вашим потребностям, Net::DNS является более гибким.
use Socket;
$iaddr = inet_aton("127.0.0.1"); # or whatever address
$name = gethostbyaddr($iaddr, AF_INET);
Если вам нужна более подробная информация DNS использовать Net::DNS модуль, вот пример:
use Net::DNS;
my $res = Net::DNS::Resolver->new;
# create the reverse lookup DNS name (note that the octets in the IP address need to be reversed).
my $IP = "209.85.173.103";
my $target_IP = join('.', reverse split(/\./, $IP)).".in-addr.arpa";
my $query = $res->query("$target_IP", "PTR");
if ($query) {
foreach my $rr ($query->answer) {
next unless $rr->type eq "PTR";
print $rr->rdatastr, "\n";
}
} else {
warn "query failed: ", $res->errorstring, "\n";
}
Первоисточник EliteHackers.info, больше деталей там.
Это может быть полезно ...
$ip = "XXX.XXX.XXX.XXX" # IPV4 address.
my @numbers = split (/\./, $ip);
if (scalar(@numbers) != 4)
{
print "$ip is not a valid IP address.\n";
next;
}
my $ip_addr = pack("C4", @numbers);
# First element of the array returned by gethostbyaddr is host name.
my ($name) = (gethostbyaddr($ip_addr, 2))[0];
один вкладыш:
perl -MSocket -E 'say scalar gethostbyaddr(inet_aton("79.81.152.79"), AF_INET)'
perl -MSocket -E 'say scalar gethostbyaddr(inet_aton("69.89.27.250"), AF_INET)'
Возвращает: Не можете найти строку терминатор "" где-нибудь до конца файла на -e строка 1.
perl -MSocket -E "say scalar gethostbyaddr(inet_aton(\"69.89.27.250\"), AF_INET)"
Возвращает: box250.bluehost.com
Я должен изменить линию, чтобы использовать двойные кавычки, а затем выйти из кавычки вокруг IP-адрес
Это, вероятно, потому, что вы используете cmd.exe под окнами , – spacebat 2013-06-13 04:49:16