首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Unix/Linux上使用perl执行批量DNS查询?

如何在Unix/Linux上使用perl执行批量DNS查询?
EN

Stack Overflow用户
提问于 2011-10-12 21:03:10
回答 2查看 6.4K关注 0票数 4

我有一个正在尝试获取其IP地址的系统列表。我已经成功地使用了perl的Net::DNS模块来执行单个主机名的IP地址查询。但是,我有1,000个系统需要ip地址。

有没有一种方法可以通过一次查询获得所有这些ip地址?

如果不是,有没有办法获取整个DNS条目列表,比如单个域?如果我得到了它,那么我可以简单地将其放入散列中,并以这种方式引用IP地址。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-12 21:21:40

不需要自定义Perl。这可以使用dig-f选项(绑定工具的一部分)来完成:

代码语言:javascript
复制
$ dig -f /path/to/host-list.txt
票数 10
EN

Stack Overflow用户

发布于 2011-10-13 22:43:57

对于较大的域数据集,这样做速度很快,不需要真正解析结果;IP总是在$results{$domain}[0][4]中。这不是一个单独的查询,但它们将并发完成(任何时候最多进行10个查询,IIRC),因此将很快完成。只需确保DNS服务器运营商不会在短时间内处理那么多请求就行了。

代码语言:javascript
复制
use AnyEvent::DNS;
use Data::Dumper;

my @domains = qw/google.com/;
my $resolver = AnyEvent::DNS->new( server => '8.8.4.4' );
my %results;

### Set up the condvar
my $done = AE::cv;
$done->begin( sub { shift->send } );

for my $domain (@domains) {
  $done->begin;
  $resolver->resolve($domain, 'a', sub {push @{$results{$domain}}, \@_; $done->end;});
}

### Decrement the cv counter to cancel out the send declaration
$done->end;

### Wait for the resolver to perform all resolutions
$done->recv;

print Dumper \%results;

输出:

代码语言:javascript
复制
$VAR1 = {
          'google.com' => [
                            [
                              'google.com',
                              'a',
                              'in',
                              300,
                              '74.125.225.52'
                            ],
                            [
                              'google.com',
                              'a',
                              'in',
                              300,
                              '74.125.225.50'
                            ],
                            [
                              'google.com',
                              'a',
                              'in',
                              300,
                              '74.125.225.49'
                            ],
                            [
                              'google.com',
                              'a',
                              'in',
                              300,
                              '74.125.225.48'
                            ],
                            [
                              'google.com',
                              'a',
                              'in',
                              300,
                              '74.125.225.51'
                            ]
                          ]
        };
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7740499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档