Hostname Lookup
2002-03-12 21:54:57
Category: perl:internet
Description: Resolves a hostname into an ip address or an ip address into a hostname.
Author: detour
Viewed: 5938
Rating: (32 votes)


#!/usr/bin/perl
# resolv.pl written by detour@metalshell.com
#
# Resolves an ip into a host or a host into an ip.
#
# http://www.metalshell.com/
#
 
use Socket;
use strict;
 
my $host_name = hostname($ARGV[0]);
print "$ARGV[0] resolves to $host_name\n";
 
sub hostname {
 
  my (@bytes, @octets,
    $packedaddr,
    $raw_addr,
    $host_name,
    $ip
  );
 
  if($_[0] =~ /[a-zA-Z]/g) {
    $raw_addr = (gethostbyname($_[0]))[4];
    @octets = unpack("C4", $raw_addr);
    $host_name = join(".", @octets);
  } else {
    @bytes = split(/\./, $_[0]);
    $packedaddr = pack("C4",@bytes);
    $host_name = (gethostbyaddr($packedaddr, 2))[0];
  }
 
  return($host_name);
}