What happened to whois?

pls at post.here.adam pls at post.here.adam
Sun Feb 20 18:36:27 UTC 2000


Thanks Barry for the cool script and thanks to the others who supplied
the whois.nic.gov and the references to geektools.  I will use them
both.

adam

Barry Margolin <barmar at bbnplanet.com> wrote:

>In article <88c668$p8m$1 at nnrp1.deja.com>,
>post_to_group  <already_seen at my-deja.com> wrote:
>>does your script also figure out for government domains? I am trying
>>to find whois info on a .gov domain and am not sure how to find the
>>whois server(s) for those domains.  A simple whois fails saying it
>>only has the com/net/org/edu domains.  And search faq's etc for network
>>solutions, arin, DoD, etc. doesn't give me any ref.  I am sorry if it
>>is right under my nose, but I am missing the whois servers for .gov.
>
>I use whois.nic.gov for government domains.  If you query
>whois.networksolutions.com for !GOV-DOM, it will tell you:
>
>   whois: whois.nic.gov
>   web:   www.nic.gov
>   email: registrar at nic.gov
>
>Anyway, here's my script.  It references a file "whohosts.txt"; I think I
>downloaded this from Richard Sexton's FTP site a while ago (although I
>don't care to read all his political posts, I am very thankful to him for
>this list), and he occasionally posts a pointer to it.
>
>#!/usr/local/bin/perl
>
>require "getopts.pl";
>require "sys/socket.ph";
>
>$port = 43;
>
>&Getopts('h:ars:');
>
>if ($#ARGV < 0) {
>	print "Usage: whois [-a] [-h host] [-s source] [-r] key\n";
>	exit(0);
>}
>
>$whohosts = "/home/sa/barmar/lib/whohosts.txt";
>$whohosts = "/users/barmar/lib/whohosts.txt" unless -f $whohosts;
>if (open (WHOHOSTS, "<$whohosts"))
>{
>  while (<WHOHOSTS>)
>    {
>      next if /^#/;
>      if (/^(.+):(\S+)/)
>	{
>	  $whois_server{$1} = $2;
>	}
>    }
>  close(WHOHOSTS)
>}
>
>$last_arg = "\L$ARGV[$#ARGV]";
>
>($suffix) = $last_arg =~ /\.([^.]+)$/;
>
>if ($opt_h)
>{
>  $whoishost = $opt_h;
>} elsif ($ARGV[0] =~ /^asn?$|^net(work)?$/ || $last_arg =~ /^((asn|net)(blk)?)-[^.]+$|^(\d+.){0,2}\d+(\.0)?$|-arin$/i)
>{
>  if ($last_arg =~ /^20[23]\.|^21[01]\./)
>    {
>      $whoishost = "whois.apnic.net";
>    } elsif ($last_arg =~ /^19[3-5]\.|^21[23]\./)
>      {
>	$whoishost = "whois.ripe.net";
>      } else
>	{
>	  $whoishost = "whois.arin.net";
>	}
>} elsif ($ARGV[0] =~ /^(host|server|server)$/i)
>{
>  $whoishost = "whois.networksolutions.com";
>} elsif ($last_arg =~ /-hst$|-dom|-org$/i)
>{ 
>  $whoishost = "whois.networksolutions.com";
>  $ARGV[$#ARGV] = "!$last_arg";
>}
>  elsif ($whoishost = $whois_server{$suffix})
>{
>} elsif ($last_arg =~ /\.[a-z][a-z]$/)
>{ # country domain, assume Europe
>  $whoishost = "whois.ripe.net";
>} else {
>  $whoishost = "whois.networksolutions.com";
>}
>
>$sockaddr = 'S n a4 x8';
>($name, $aliases, $type, $len, $thataddr) = gethostbyname($whoishost);# || die "gethostbyname($whoishost): $!\n";
>die "gethostbyname($whoishost): $!\n" unless $thataddr;
>
>$that = pack($sockaddr, &AF_INET, $port, $thataddr);
>socket(S, &AF_INET, &SOCK_STREAM, $proto) || die "socket failed: $!\n";
>connect(S, $that) || die "Connect failed: $!\n";
>select(S); $| = 1; select(STDOUT);
>
>if ($opt_a) { print S "-a "; }
>if ($opt_r) { print S "-r "; }
>if ($opt_s) { print S "-s $opt_s "; }
>
>print S "@ARGV\n";
>
>print <S>;


post here so everyone can benefit, but to write me:
a d a m - s a t p a c b e l l d o t n e t



More information about the bind-users mailing list