Archivi

Perl su Windows: automatizzare il completamento di un form

10 ottobre 2014 di In: Networking, Script

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

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>

Lo so, l’ho fatto in PHP per comodità. Quando imparerò un minimo di programmazione web di Perl integrerò.

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.

Sophos AntiVirus: Come disinstallare i componenti Sophos

7 ottobre 2014 di In: Sistemistico

In un ambiente aziendale, dove è installato un server Sophos Enterprise Console, non è possibile disinstallare i componenti Sophos Endpoint Security and Control direttamente dalla console.
Si possono percorrere due strade:

1 – Disinstallare manualmente

L’unica cosa richiesta, oltre ad un utente amministratore (inserito nel gruppo Sophos Administrator locale o di dominio) è di seguire il seguente ordine di disinstallazione:

  1. Sophos AutoUpdate
  2. Sophos Client Firewall (Se installato)
  3. Sophos Remote Management System (RMS)
  4. Sophos Anti-Virus (richiede un riavvio per il completamento)

2 – Creare un file batch

Questo permette di eseguire il file manualmente o automaticamente anche da remoto, velocizzando molto le operazioni.
Per poter seguire questa strada è necessario conoscere i GUID dei componenti che si andranno a disinstallare. I GUID cambiano a seconda del componente e della relativa versione.

Per conoscere i GUID è necessario:

  1. entrare nei registri di sistema eseguendo regedit.exe
  2. navigare in HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\
    (Nella versione x64 è necessario verificare anche la chiave HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall)
  3. cercare tra le chiavi i componenti Sophos e, per ognuno, il valore di “UninstallString”
  4. copiare il contenuto di “UninstallString” in un file di testo che poi diventerà il file batch

Questa procedura richiederebbe tempo e varrebbe la pena solo se il numero di client da disinstallare sono molti.
Per questo il supporto Sophos mi ha fornito la lista (quasi completa) dei GUID. Quindi dovete solo controllare la versione dei componenti Sophos installati. La lista è disponibile qui sotto:


L’ordine di disinstallazione che Sophos richiede per questa modalità è diversa da quella precedente:

  1. Sophos Patch Agent
  2. Sophos Compliance Agent
  3. Sophos Remote Management System
  4. Sophos Client Firewall
  5. Sophos Anti-Virus
  6. Sophos AutoUpdate

Il vostro file batch dovrebbe essere simile a quello sottostante:

REM Arresto servizio di AutoUpdate
net stop "Sophos AutoUpdate Service"
 
REM Disinstallazione Sophos Remote Management System 				
MsiExec /X{FED1005D-CBC8-45D5-A288-FFC7BB304121} /qn REBOOT=SUPPRESS /L*v %windir%\Temp\Uninstall_RMS.txt
 
REM Disinstallazione Sophos Anti-Virus 10.3.2 and above 	
MsiExec /X{D929B3B5-56C6-46CC-B3A3-A1A784CBB8E4} /qn REBOOT=SUPPRESS /L*v %windir%\Temp\Uninstall_SAV10_Log.txt
 
REM Disinstallazione Sophos AutoUpdate 3.1
MsiExec.exe /X{D924231F-D02D-4E0B-B511-CC4A0E3ED547} /qn REBOOT=SUPPRESS /L*v %windir%\Temp\Uninstall_SAU.txt

Lo switch ” /qn REBOOT=SUPPRESS ” non riavvia la macchina alla fine della disinstallazione.
Lo switch ” /L*v %windir%\Temp\Log.txt ” permette la creazione di un file di log nel percorso specificato

Eseguite il file batch sulle macchine e buona disinstallazione!

Vizioncore / Dell vReplicator: La replica della macchina virtuale fallisce con errore – 3185

12 settembre 2014 di In: Networking, Sistemistico

Avete appena sostituito un host con un nuovo hardware e tentando di eseguire delle repliche con vReplicator ricevete un messaggio email tipo:

@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that the RSA host key has just been changed. The fingerprint for the RSA key sent by the remote host is c1:a0:a7:07:71:c1:a0:a7:07:71:c1:a0:a7:07:71:16. Please contact your system administrator. Add correct host key in /root/.ssh/known_hosts to get rid of this message. Offending key in /root/.ssh/known_hosts:1 RSA host key for 10.x.x.x has changed and you have requested strict checking. Host key verification failed. FATAL internal internal error (at pkt_recv:43)

Il problema consiste nel fatto che la connessione affidabile tra l’host sorgente e l’host destinazione non esiste più dato che la chiave RSA dell’host è cambiata. Per risolvere basta cancellare la riga contenente la vecchia chiave RSA dal file known_hosts.

Per passi:

  • connettetevi alla macchina sorgente della replica
  • posizionatevi nella cartella giusta cd /root/.ssh
  • aprite il file con un editor di test vi known_hosts
  • risalite con il cursore cercando la linea che inizia con l’indirizzo IP dell’host di destinazione e premete dd (due volte “d” – cancella la riga)
  • salvate ed uscite con :wq
  • iniziate una connessione ssh verso l’host di destinazione – ssh [IP host]
  • vi apparirà un messaggio: “The authenticity of host [nome host] can’t be established. RSA key fingerprint is [fingerprint]. Are you sure you want to continue connecting (yes/no)?” e scriverete yes.
  • chiudete putty
  • ritentate la replica

Windows: disabilitare l’aggiornamento Java per tutti gli utenti

1 settembre 2014 di In: Sistemistico

Per disabilitare l’aggiornamento di Java per tutti gli utenti è necessario modificare il registro

Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\Software\JavaSoft\Java Update\Policy]
"EnableJavaUpdate"=dword:00000000

Potete modificare la voce da regedit o copiare ed incollare il contenuto del box in un file .reg ed eseguirlo semplicemente con un doppio click.

WSUS: Riparare Database Corrotto

1 settembre 2014 di In: Sistemistico, SQL

Per connettersi al database interno di WSUS:

sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query

Per tentare un primo ripristino:

ALTER DATABASE SUSDB SET SINGLE_USER WITH NO_WAIT
DBCC CHECKDB
go

Se il primo comando non sembra risolvere provate il comando seguente.
Il comando seguente farà perdere sicuramente dei dati al database

DBCC checkdb ('SUSDB', repair_allow_data_loss)
go

Per riportare il database in multi user

ALTER DATABASE SUSDB SET MULTI_USER WITH NO_WAIT
go

Windows: gestire i servizi da Command Line

1 settembre 2014 di In: Sistemistico

Con il comando SC è possibile interagire con i servizi di sistema.
Chiaramente bisogna eseguire i comandi con un utente che ha i permessi di amministratore.

Di seguito qualche esempio:

sc query type= service state= inactive | more

permette di visualizzare tutti i servizi non attivi sulla macchina. Il comando “more” alla fine permette la visualizzazione per pagine.
Questa linea potrebbe tornare utile se non sapete esattamente il nome del servizio che dovete avviare.

sc config [nomeservizio] start= auto

permette di impostare il servizio come automatico. Quindi il servizio verrà avviato all’avvio del sistema.
Le altre possibilità sono demand, disabled e delayed-auto.

sc stop [nomeservizio]

permette di arrestare il servizio.

sc start [nomeservizio]

permette di avviare il servizio.

In un ambito di dominio è possibile eseguire i comandi anche su un sistema remoto specificandolo appena dopo “sc”

sc \\[sistemaremoto] start [nomeservizio]

Errore Windows Update 80072efd

31 agosto 2014 di In: Sistemistico

Se notate che l’aggiornamento del vostro sistema operativo Windows non va a buon fine e l’errore segnalato è 0x80072efd provate a reimpostare la configurazione del proxy eseguendo un prompt di MS-DOS e lanciando il comando:

netsh winhttp reset proxy

Office 2007 – “[nomefile] include contenuto illeggibile. Recuperare il contenuto della cartella di lavoro?”

4 aprile 2014 di In: Sistemistico

Quando si tenta di aprire un file xlsx con Microsoft Office Excel 2007, viene visualizzato il seguente messaggio di errore:
“[nomefile] include contenuto illeggibile. Recuperare il contenuto della cartella di lavoro? Se la cartella proviene da una fonte attendibile cliccare Sì”. Però all’apertura del file, tutto è come lo avevate salvato.

Il problema potrebbe essere l’applicazione iCloud, che di solito viene installata assieme a iTunes. Se non utilizzate iCloud o non ne potete più dell’errore procedete alla disinstallazione di iCloud da “Pannello di Controllo” -> “Programmi e funzionalità” e provate a riaprire il file o i file.

Script Utili: Ricerca file in windows

19 marzo 2014 di In: Sistemistico

Nella vostra installazione Windows potete creare un’operazione pianificata per creare una lista di tutti i file presenti e il loro percorso assoluto, in un disco o in una directory con il comando:

dir /s /b * > dirlist.txt

Quando dovete trovare un file potete usare findstr. Ad esempio:

findstr "\.jpg" dirlist.txt

trova tutti i file jpg

findstr /i /r "windows.*system32.*png$" dirlist.txt

trova tutti i file png in \Windows\system32\

E’ una soluzione veloce da impostare.

Vedrò di sviluppare un batch per migliorare le capacità di questo script.