获取主机名的所有IP地址

Nav*_*pak 5 nslookup perl

我正在尝试获取主机的所有IP地址.

这是nslookup输出:

>>nslookup site.com

Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   site.com
Address: 1.1.1.1
Name:   site.com
Address: 2.2.2.2
Run Code Online (Sandbox Code Playgroud)

我试过这段代码:

use Socket;
use Data::Dumper;
my $name = "site.com";
@addresses = gethostbyname($name)   or die "Can't resolve $name: $!\n";
@addresses = map { inet_ntoa($_) } @addresses[4 .. $#addresses];
print Dumper(\@addresses);
Run Code Online (Sandbox Code Playgroud)

这是输出:

['1.1.1.1'];
Run Code Online (Sandbox Code Playgroud)

无论如何得到两个1.1.1.12.2.2.2

ste*_*ieb 8

您可以使用Net :: DNS :: Resolver获取主机名的IPv4地址(A记录):

use warnings;
use strict;

use feature 'say';

use Net::DNS::Resolver;

my $res = Net::DNS::Resolver->new;

my $name = 'stackoverflow.com';
my $q = $res->query($name);

if ($q){
    print "$name has the following IPv4 addresses:\n";
    for ($q->answer){
        say $_->address if $_->type eq 'A';
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

stackoverflow.com has the following IPv4 addresses:
151.101.65.69
151.101.193.69
151.101.1.69
151.101.129.69
Run Code Online (Sandbox Code Playgroud)

  • 我认为你的回答是OP想要的,但是OP的问题是模糊的,对后人我想指出这一点. (3认同)