Perl su Windows: Ottenere l’indirizzo IP internet e l’hostname

10 ottobre 2014 di In: Networking, Script

Questo è frutto di una mia curiosità. Ho utilizzato Strawberry Perl su Windows.
Il codice è tutto commentato.

#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::Simple;
use Time::localtime;
use Sys::Hostname;
 
# Percorso del file di output
my $output = 'output.txt';
 
# Estraggo l'indirizzo IP connettendomi ad un sito
my $ip = get('https://www.net-addiction.net/ip/ip.php');
$ip = 'Non ho trovato un indirizzo IP!' if !$ip;
 
# Estraggo la data per il timestamp
my $mese = localtime->mon + 1;
my $giorno = localtime->mday;
my $anno = localtime->year + 1900;
my $ora = localtime->hour;
my $minuti = localtime->min;
my $timestamp = $anno.$mese.$giorno." @ ".$ora.":".$minuti; 
 
# Estraggo l'hostname
my $host = hostname;
 
# Crea il file definito in precedenza se non esiste e scrive IP e timestamp (in append - senza sovrascrivere il file)
unless (-e $output) { open(FILE, '>', $output); close FILE; } 
open(FILE, '>>', $output) || die("Impossibile creare il file!"); 
print FILE $ip . ' - ' . $timestamp . "\n";
close FILE;
 
# Scrive a video IP e Hostname
system("cls");
print "Il tuo indirizzo IP e\' ".$ip."\nIl tuo hostname e\' " . $host ."\n";
 
#Evito che la finestra si chiuda ma non mostro l'output di pause
system ("pause>nul");

l’output a video è:

Il tuo indirizzo IP e' 166.95.244.117
Il tuo hostname e' Hostname-PC

Mentre il file output.txt contiene:

166.95.244.117 - 20141010 @ 1:26
166.95.244.117 - 20141010 @ 1:26
166.95.244.117 - 20141010 @ 1:27
166.95.244.117 - 20141010 @ 1:27

Prossimamente cercherò un modo per inviare questi dati ad un sito web che controlli l’idoneità della richiesta e salvi solo i dati dei computer abilitati.

Nessun commento presente