/usr/bin/ip2hostname is in flowscan 1.006-13.1.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #! /usr/bin/perl
# ip2hostname - a filter to turn IP addresses into host names wherever possible.
# $Id: ip2hostname,v 1.8 2001/02/13 04:42:20 plonka Exp $
# Dave Plonka <plonka@doit.wisc.edu>
use FindBin;
use Socket;
use Getopt::Std;
sub usage {
my $status = shift;
print STDERR <<_EOF_
usage: $FindBin::Script [-h] [ -p printf_format ] [ [-i extension] file [...] ]
-h - help (shows this usage information)
(mnemonic: 'h'elp)
-p printf_format - use this printf format for IP address and hostname,
respectively.
The default format is '%.0s%s', which supresses
the printing of the IP address (i.e. "%.0s" specifies
printing a string with a maximum width of zero).
To maintain column widths (since both the IP address
and hostname vary in lenght), a format like this may
be useful:
'%-16.16s %-20s'
(mnemonic: 'p'rintf format)
-i extension - edit the files in place (rather than sending to
standard output) This option requires file name(s)
argument(s).
The extension is added to the name of the old file
to make a backup copy.
If you don't wish to make a backup, use "-I".
(mnemonic: edit 'i'n place)
-I - like "-i" but no backup is made.
(mnemonic: edit 'I'n place, trusting this script 'I'mplicitly. ;^)
_EOF_
;
exit $status
}
getopts('hp:Ii:') || usage(2);
usage(0) if ($opt_h);
$| = 1;
my $oldargv;
my %cache;
while (<>) {
# { this is straight from the "perlrun" man page:
if ('-' ne $ARGV && ($opt_I || $opt_i) && $ARGV ne $oldargv) {
if ('' eq $opt_i) {
unlink($ARGV) or die "unlink \"$ARGV\": $!\n"
} else {
rename($ARGV, $ARGV . $opt_i) or die "rename \"$ARGV\": $!\n"
}
open(ARGVOUT, ">$ARGV");
select(ARGVOUT);
$oldargv = $ARGV;
}
# }
my $s = $_;
my $prev = '';
my($name, $val);
while ($s =~ m/(\d+\.)\d+\.\d+\.\d+/) {
my $ip = $&;
$s =~ s/$1//;
next if ($ip eq $prev);
if (defined($cache{$ip})) {
$name = $cache{$ip}
} else {
$name = gethostbyaddr(inet_aton($ip), AF_INET);
$cache{$ip} = $name
}
if ('' eq $name) {
$name = $ip
}
if ($opt_p) {
$val = sprintf($opt_p, $ip, $name)
} else {
$val = $name
}
s/$ip/$val/g;
$prev = $ip
}
print
}
|