#!/bin/sh -- # A comment mentioning perl, indented bash's sake. eval 'exec perl -S $0 ${1+"$@"}' if 0; chop($Program = `basename $0`); $Usage = <<"END"; $Program: XXX Usage: $Program Options: Notes: END select(STDERR); $|=1; select(STDOUT); $|=1; LOOP: while (@ARGV) { $_ = shift; CASE: { /^-j$/ && ($Njobs = shift, last CASE); /^-d$/ && ($Debug = 1, last CASE); /^--$/ && (last LOOP); # -- means end of switches /^-(-.*)$/ && (unshift(@ARGV, $1), last CASE); /^(-h|-help)$/ && ((print $Usage), exit 0, last CASE); if ( /^-(..+)$/ ) { # split bundled switches: local($y, $x) = ($1, ''); foreach $x (reverse(split(//, $y))) { unshift(@ARGV,"-$x") }; last CASE; } /^-/ && ((print "Invalid arg: $_\n$Usage"), exit 1, last CASE); unshift(@ARGV,$_); last LOOP; } } if ( $ARGV[0] eq '' ) { while (<>) { chop; &lookup($_); } } else { while ($host = shift) { if ( -f $host ) { open(FILE, "$host") || next; while () { chop; &lookup($_); } close(FILE); } else { &lookup($_); } } } sub lookup { local($host) = @_; return unless $host ne ''; local($name,$aliases,$type,$len,@addrs, $addr); if ( $host =~ /^[\d\.]+$/ ) { local($af) = 2; # ??? local($ip) = pack('C4', split(/\./, $host)); ($name,$aliases,$type,$len,@addrs) = gethostbyaddr($ip, $af); } else { # ($name,$aliases,$type,$len,$addrs) = gethostbyname($host); # @addrs = ($addrs); ($name,$aliases,$type,$len,@addrs) = gethostbyname($host); } print STDOUT "HOST: $host\n"; foreach $addr (@addrs) { local($a) = join('.', unpack('C4', $addr)); print STDOUT "\taddr:\t$a\n"; } print STDOUT "\tname:\t$name\n"; print STDOUT "\talii:\t\"$aliases\"\n"; print STDOUT "\ttype:\t$type\n"; }