Script I.1.6: Offline Reverse DNS Resolution

For maximum performance, Web server hostname look ups should be off:
 HostnameLookups Off 

Do DNS resolution offline during nightly log processing:

Script I.1.6: Reverse DNS Resolution

 #!/usr/local/bin/perl
 # file: logresolve.pl
  
 use constant TIMEOUT => 2;
 $SIG{ALRM} = sub {die "timeout"};
 
 while (<>) {
     s/^(\S+)/lookup($1)/e;
 } continue { 
     print;
 }
 
 sub lookup {
     my $ip = shift;
     return $ip unless $ip=~/\d+\.\d+\.\d+\.\d+/;
     return $CACHE{$ip} if exists $CACHE{$ip};
     my @h = eval <<'END';
     alarm(TIMEOUT);
     my @i = gethostbyaddr(pack('C4',split('\.',$ip)),2);
     alarm(0);
     @i;
 END
     $CACHE{$ip} = $h[0];
     return $CACHE{$ip} || $ip;
 }

<< Previous Contents >> Next >>

Lincoln D. Stein, lstein@cshl.org
Cold Spring Harbor Laboratory
Last modified: Mon Aug 17 10:41:16 EDT 1998