#!/usr/bin/perl use Net::hostent; use Socket; use File::Basename; $PROGNAME=basename($0); if ($ARGV[0] eq "" || $ARGV[0] eq "--help" || $ARGV[0] eq "-h") { system("clear"); print < ex: a) $PROGNAME www.yahoo.com b) $PROGNAME 204.71.200.74 c) $PROGNAME 3427256394 This will: a) convert a hostname into it's decimal equivalent. b) convert a dotted-quad IP into it's decimal equivalent. c) convert a decimal string into it's dotted-quad IP equivalent. END exit; } sub i2d { for $host ( @ARGV ) { unless ($h = gethost($host)) { warn "$0: no such host: $host\n"; next; } ($oct1, $oct2, $oct3, $oct4) = split(/\./, $host); $exp1 = 2 ** 24; $exp2 = 2 ** 16; $exp3 = 2 ** 8; $exp4 = 2 ** 0; $num1 = $oct1 * $exp1; $num2 = $oct2 * $exp2; $num3 = $oct3 * $exp3; $num4 = $oct4 * $exp4; $newnum = $num1 + $num2 + $num3 + $num4; system("clear"); printf ("\n\n$host [%s] converts to $newnum\n\n", $h->name); } } sub h2d { for $host ( @ARGV ) { unless ($h = gethost($host)) { warn "$0: no such host: $host\n"; next; } $s=inet_ntoa($h->addr); ($oct1, $oct2, $oct3, $oct4) = split(/\./, $s); $exp1 = 2 ** 24; $exp2 = 2 ** 16; $exp3 = 2 ** 8; $exp4 = 2 ** 0; $num1 = $oct1 * $exp1; $num2 = $oct2 * $exp2; $num3 = $oct3 * $exp3; $num4 = $oct4 * $exp4; $newnum = $num1 + $num2 + $num3 + $num4; system("clear"); printf ("\n\n$host [%s] converts to $newnum\n\n", inet_ntoa($h->addr)); } } sub d2i { $dec=$ARGV[0]; $ip=`nslookup -sil $dec |grep "Name:"`; ($trash,$ip)=split(/\s+/,$ip); $host=$ip; unless ($h = gethost($host)) { warn "$0: no such host: $host\n"; next; } $s=inet_ntoa($h->addr); system("clear"); printf ("\n\n$dec converts to $ip [%s]\n\n", inet_ntoa($h->addr)); } if ($ARGV[0] =~ /^[A-Za-z]/) { &h2d; } elsif ($ARGV[0] =~ m/^([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])\.([01]?\d\d|2[0-4]\d|25[0-5])$/) { &i2d; } else { &d2i; }