Isso pode ser feito... vc dando um ip determinado ou alguem acessando e o msm pegando um ip alheio de quem acessou.
Para que ele registre os dados de um ip simplesmente o ip acessando basta você mudar o $ip para: $ip = $ENV{'REMOTE_ADDR'};
Para o msm funcionar as seguintes modules devem estar instaladas.
IP::Country::Fast
CGI
Net::Nslookup
para instalar execute o programa:
c:\perl\bin\ppm.exe
digite install nome_da_module
pronto.
#!/usr/bin/perl
use IP::Country::Fast;
use CGI qw/:standard/;
$cmd = new CGI;
$ip = $cmd->param('ip');
my $reg = IP::Country::Fast->new();
print "Content-type: text/html\n\n";
open(IP,">$ip.rota");
close(IP);
print "O ip avaliado é: $ip<br>";
$pais = $reg->inet_atocc("$ip");
print "Pais: ". $pais ."\n<br>";
$navegador = $ENV{'HTTP_USER_AGENT'};
($nav,$i,$in,$inu,$os) = split (/\ /,$navegador);
print "Navegador: $nav<br>Sistema operacional: $os<br>\n";
use Net::Nslookup;
my @addrs = nslookup $host;
my $name = nslookup(host => "$ip", type => "PTR");
print "Reverso: $name<br>";
print "Rota do ip<br>";
$command = '/usr/bin/traceroute';
#$command = 'c:\windows\trace.exe';
print "<hr>";
print "<PRE>";
system ("$command $ip");
system ("$command $ip >> $ip.rota");
print "</PRE>";
print "<hr>";
print "<br><br><hr>\n";
($seg,$min,$hora,$diam,$mes,$ano,$sdia,$diano,$isdst) = localtime(time);
@nummeses = ("01","02","03","04","05","06","07","08","09","10","11","12");
$ano += 1900;
$sdata = "$diam/@nummeses[$mes]/$ano";
if ($hora < 10) { $hora = "0$hora"; }
if ($min < 10) { $min = "0$min"; }
if ($seg < 10) { $seg = "0$seg"; }
$hora = "$hora\:$min\:$seg";
print "Data e hora da coleta: $sdata - $hora";
print "<br><hr>\n";
open(IP,">$ip.dados");
print IP "Ip do usuário: $ip\n";
print IP "Pais: $pais\n";
print IP "Navegador: $nav\n";
print IP "Sistema operacional: $os\n\n";
print IP "Reverso: $name\n";
print IP "Arquivo com o tracert do usuário: $ip.rota\n\n";
print IP "Data e hora da coleta: $sdata - $hora";
close(IP);