Net::DNSを使って遊ぶ

Geekなぺーじ : ドメインDNSの発見(Net::DNS
http://www.geekpage.jp/programming/perl-network/net-dns-ns.php

面白いと思ったので、自分でも試してみました。

コマンドラインで引数にドメインを渡すと、IPアドレスとNSレコードをコンソール出力します。

#!/usr/bin/perl

use strict;
use warnings;
use Net::DNS;

my $arg = $ARGV[0];
my $res = Net::DNS::Resolver->new;

# Look up a host's addresses
&showResult($res->search($arg), "address", "A", "IP Address");
# Find the nameservers for a domain
&showResult($res->query($arg, "NS"), "nsdname", "NS", "NS Record ");
exit 0;

sub showResult {
    my $query = shift;
    my $property = shift;
    my $type = shift;
    my $dispName = shift;
    if ($query) {
        foreach my $rr ($query->answer) {
            next unless $rr->type eq $type;
            print $dispName, " : ", $rr->$property, "\n";
        }
    } else {
        warn $dispName, " : ", $res->errorstring, "\n";
    }
}

コマンドラインで実行すると以下のようになります。

[user dir]$ ./netDNS.pl google.co.jp
IP Address : 72.14.207.104
NS Record  : ns2.google.com
NS Record  : ns3.google.com
NS Record  : ns4.google.com
NS Record  : ns1.google.com
[user dir]$