http://www.perlmonks.org?node_id=945426

pileofrogs has asked for the wisdom of the Perl Monks concerning the following question:

Greeting Monks!

I'm sure this question has been asked and answered before but I can't find it. I apologize.

I want to compare two hostnames to see if they point to the same host/IP. I think I need to query DNS and follow any CNAMEs to get to an A record and an IP address.

This seems like something someone would have already written, but I haven't found it. I must be using the wrong search terms.

Because I rarely make sense, here's an example.

# pseudo code! Not perl! # # example.com = 192.168.0.10 # www.example.com = CNAME example.com # lungfish.example.com = 192.168.0.10 # fruitbat.example.com = 192.168.0.12 compare_host_names('example.com','example.com) == true compare_host_names('example.com','www.example.com) == true compare_host_names('example.com','lungfish.example.com) == true compare_host_names('example.com','fruitbat.example.com') == false

Someone has written something to do this, right? What is it called?

And for extra credit, what search terms should I have used?

Thanks!
--Pileofrogs

Replies are listed 'Best First'.
Re: Compare Host Names
by Corion (Patriarch) on Dec 28, 2011 at 22:30 UTC

    If doing serial lookups is enough for you, simply checking the results of gethostbyname should work, except for the problem of round-robin DNS.

    As an alternative, the DNS modules (for example, AnyEvent::DNS) can do more lookups and in parallel. With those, you can possibly get all names for hostname entries, at least the synopsis of AnyEvent::DNS suggests so.

      Yeah, it just seems like my example compare_host_names() function would already exist. And it would probably handle round robin or other things I haven't thought of.

      If it doesn't exist, I'm gonna write it.