Questo script Perl prende IP internet e hostname della macchina su cui viene eseguito e li manda ad un form presente in internet.
Il completamento del form è possibile grazie al modulo WWW::Mechanize;
#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::Simple;
use Sys::Hostname;
use WWW::Mechanize;
# 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 l'hostname
my $host = hostname;
# Imposto i campi da compilare con i relativi valori (il nome del campo dev'essere uguale all'attributo name del tag input
my $mech = WWW::Mechanize->new();
my $url = "https://www.net-addiction.net/ip/form.php"; # Definizione dell'URL contenente il form
$mech->get($url);
my $result = $mech->submit_form(
form_number => 1, # L'identificativo del form (nel caso in cui nella pagina ce ne fosse piu' di uno
fields =>
{
Code => 'RLRRLRLL', # Codice di controllo - è la variabile che distingue le richieste autorizzate
IP => $ip, # L'indirizzo IP estratto
Hostname => $host, # L'hostname estratto
}
, button => 'Invia' # Questo deve corrispondere all'attributo name del tag input type="submit"
);
print $result->content(); # Esegue il completamento
system("cls"); # Svuota la finestra del prompt
print "Il tuo indirizzo IP e\' ".$ip."\nIl tuo hostname e\' " . $host ."\n"; # Scrive a video IP e Hostname |
#!/usr/bin/perl -w
use strict;
use warnings;
use LWP::Simple;
use Sys::Hostname;
use WWW::Mechanize;
# 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 l'hostname
my $host = hostname;
# Imposto i campi da compilare con i relativi valori (il nome del campo dev'essere uguale all'attributo name del tag input
my $mech = WWW::Mechanize->new();
my $url = "https://www.net-addiction.net/ip/form.php"; # Definizione dell'URL contenente il form
$mech->get($url);
my $result = $mech->submit_form(
form_number => 1, # L'identificativo del form (nel caso in cui nella pagina ce ne fosse piu' di uno
fields =>
{
Code => 'RLRRLRLL', # Codice di controllo - è la variabile che distingue le richieste autorizzate
IP => $ip, # L'indirizzo IP estratto
Hostname => $host, # L'hostname estratto
}
, button => 'Invia' # Questo deve corrispondere all'attributo name del tag input type="submit"
);
print $result->content(); # Esegue il completamento
system("cls"); # Svuota la finestra del prompt
print "Il tuo indirizzo IP e\' ".$ip."\nIl tuo hostname e\' " . $host ."\n"; # Scrive a video IP e Hostname
Dall’altra parte (seguendo l’esempio sopra in https://www.net-addiction.net/ip/form.php) ci deve essere un form tipo:
<html>
<head><title>Pagina per ricezione dati</title></head>
<body>
<?php
if ($_POST['Code'] == 'RLRRLRLL') { // Se il codice corrisponde
$ip = $_POST['IP']; // assegno le variabili
$hostname = $_POST['Hostname'];
$myfile = fopen("dati.txt", "a") or die("Impossibile aprire il file!"); // Tento di aprire il file in append
$txt = $ip . " - " . $hostname . "\n"; // Creo la stringa da scrivere su file
fwrite($myfile, $txt); // Scrivo su file
fclose($myfile); // chiudo il file
echo "<h1>dati inviati</h1>"; // Confermo che i dati sono stati inviati
}
?>
<form id="1" action="form.php" method="POST">
<input type="text" id="Code" name="Code" />
<input type="text" id="IP" name="IP" />
<input type="text" id="Hostname" name="Hostname" />
<input type="submit" id="Invia" name="Invia" value="Invia" />
</form>
</body>
</html> |
<html>
<head><title>Pagina per ricezione dati</title></head>
<body>
<?php
if ($_POST['Code'] == 'RLRRLRLL') { // Se il codice corrisponde
$ip = $_POST['IP']; // assegno le variabili
$hostname = $_POST['Hostname'];
$myfile = fopen("dati.txt", "a") or die("Impossibile aprire il file!"); // Tento di aprire il file in append
$txt = $ip . " - " . $hostname . "\n"; // Creo la stringa da scrivere su file
fwrite($myfile, $txt); // Scrivo su file
fclose($myfile); // chiudo il file
echo "<h1>dati inviati</h1>"; // Confermo che i dati sono stati inviati
}
?>
<form id="1" action="form.php" method="POST">
<input type="text" id="Code" name="Code" />
<input type="text" id="IP" name="IP" />
<input type="text" id="Hostname" name="Hostname" />
<input type="submit" id="Invia" name="Invia" value="Invia" />
</form>
</body>
</html>
Lo so, l’ho fatto in PHP per comodità. Quando imparerò un minimo di programmazione web di Perl integrerò.
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"); |
#!/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 |
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 |
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.
Ho scoperto oggi che è possibile con un solo comando cancellare tutte le occorrenze di un file in una cartella e in tutte le sue sottocartelle con un semplice comando.
1
| del /S [percorso] [nomefile] |
del /S [percorso] [nomefile]