Tag Archive - Batch

SessionStoreBackup: salvare la propria sessione Firefox ogni volta che si vuole

E’ dai tempi di Firefox 2 che Mozilla ha introdotto una funzionalità in grado di salvare le proprie tab aperte all’atto della chiusura del browser, dando poi la possibilità di riprendere il lavoro lasciato a metà in un secondo momento. Amata e odiata allo stesso tempo, questa funzione è ancora oggi presente (grazie a Panorama), fondamentale per chi ne ha sempre fatto uso, come “se non ci fosse” per chi è abituato a tenere qualche sito aperto ed è in grado di terminare il proprio lavoro prima di chiudere il browser.

Io ricado nel primo gruppo, e come promesso sul forum di Mozilla Italia nella discussione dedicata alla accidentale perdita di tab lasciate aperte, voglio scrivere qualche riga che vi permetta di aiutarvi nell’impresa del non perdere mai il proprio lavoro.

Fondamentali

Firefox (anche le versioni Aurora, Nightly e Beta, ndr) salvano le schede (e gruppi di) in uno specifico file all’interno del proprio profilo: sessionstore.js (kb.mozillazine.org/Session_Restore). Se ancora non sapete come accedere alla cartella contenente il profilo, vi rimando alla documentazione in italiano, localizzata dalla nostra associazione: support.mozilla.com/it/kb/Profili. Come ulteriore facilitazione, dalla versione 4, Firefox permette di arrivare facilmente a destinazione semplicemente selezionando il menu Aiuto / Risoluzione dei problemi / Apri Cartella (bottone in alto nella pagina proposta).

La frequenza di backup del file sessionstore.js può essere variata manualmente dall’about:config, operazione che mi sento di sconsigliare a chi non ha particolare confidenza con questo tipo di cose e -soprattutto- non vuole rischiare di far dei danni all’interno del proprio profilo principale. Suggerisco invece l’utilizzo di uno script esterno che vada semplicemente a creare una copia sempre nuova del file sessionstore.js, che magari cancelli i file più vecchi di una determinata quantità di giorni (perché non più utili), esattamente ciò che ho fatto per me e che vi propongo oggi.

Lo script

Basato sull’originale di ‘random‘, ho voluto completarlo e permettervi di:

  • creare una cartella che tenga i backup del file sessionstore.js all’interno della cartella del proprio profilo senza la necessità di chiudere Firefox;
  • verificare e cancellare file più vecchi di 30 giorni rispetto al lancio dello script in modo del tutto automatico, così da tenere in ordine la cartella e non conservare file ormai inutili;

Sono sicuro della bontà del mio script, ma prima è forse meglio specificare sempre che:

ATTENZIONE: Prima di eseguire qualsiasi modifica ai vostri file e/o dispositivi siete pregati di effettuare un backup di questi. Solo così sarete capaci di tornare indietro riparando ad eventuali errori di distrazione. L’articolo e l’autore non possono essere ritenuti responsabili di alcun danno subito dalla vostra strumentazione. Buon lavoro.

Il codice è semplice per gli addetti ai lavori (diversamente potete saltare al successivo paragrafo ;-)), ve lo propongo:


REM Inserire il nome della cartella del profilo qui di seguito
REM Se non sai cosa fare, leggi http://wp.me/pdQ5q-1BY

set NOMEPROFILO=vn8iu7x0.default

REM NON TOCCARE NIENTE DA QUI IN POI!

@echo off

cls
echo SessionStoreBackup 0.4
echo Gioxx - gf.solone@mozillaitalia.org
echo Info: http://wp.me/pdQ5q-1BY
echo;

:Preparazione
echo;
echo Lettura directory e file di salvataggio sessione ...
echo;

set sessionFileDir=%appdata%\Mozilla\Firefox\Profiles\%NOMEPROFILO%\
set sessionFileName=sessionstore
set sessionFileSuffix=.js

set stampH=%time:~0,2%
if %stampH% lss 10 (set stampH=0%time:~1,1%)
set stampM=%time:~3,2%
set stampS=%time:~6,2%
set stampU=%time:~9,2%
set sessionVer=%stampH%%stampM%%stampS%%stampU%

echo Fatto.
echo;

:Start
IF NOT EXIST "%sessionFileDir%%sessionFileName%%sessionFileSuffix%" (GOTO :End)
IF NOT EXIST "%sessionFileDir%%sessionFileName%-%sessionVer%%sessionFileSuffix%" (
echo Creo il file di backup ...
echo;
copy "%sessionFileDir%%sessionFileName%%sessionFileSuffix%" "%sessionFileDir%%sessionFileName%-%sessionVer%%sessionFileSuffix%"
echo;
echo Sposto il file nella cartella di backup ...
echo;
move "%sessionFileDir%%sessionFileName%-%sessionVer%%sessionFileSuffix%" "%sessionFileDir%SessionStoreBackup\"
echo;
echo Backup completato in
echo %sessionFileDir%SessionStoreBackup\%sessionFileName%-%sessionVer%%sessionFileSuffix%
echo;
)

:PuliziaFile
echo Pulizia file obsoleti ...
echo;
if not exist %windir%\..\temp\OldSessions mkdir %windir%\..\temp\OldSessions
robocopy %sessionFileDir%SessionStoreBackup %windir%\..\temp\OldSessions /E /MOV /MINAGE:7 /R:10
rd %windir%\..\temp\OldSessions /s /q
echo Fatto.

:End

L’unico dettaglio da andare a modificare è il nome della cartella del vostro profilo. Dovrete andare a copiare l’esatto nome e inserirlo subito dopo “NOMEPROFILO=” nella prima riga dello script, sostituendo il nome d’esempio che ho lasciato io (vn8iu7x0.default). Non occorre toccare nient’altro.

Potete scaricare lo script già funzionante all’indirizzo: downloads.gxware.org/index.php?dir=apps/mozilla/&file=SessionStoreBackup.zip

Per farlo funzionare -una volta inserito il nome della cartella del vostro profilo- basterà un semplice doppio clic sul file batch. I file di backup verranno conservati nella cartella SessionStoreBackup all’interno della cartella del profilo e potranno facilmente essere sostituiti a quello danneggiato o -peggio ancora- perso. Semplicemente, una volta chiuso Firefox, basterà spostare il file desiderato dalla cartella di backup a quella principale del profilo, quindi rinominarlo in “sessionstore.js” (se dovesse già esistere il file, sovrascrivetelo o cancellatelo prima di spostare il file di backup).

Mi sembra non manchi nulla. Potrebbe essere sensato parlare di operazione schedulata ma sarà argomento di un prossimo articolo ;-) In caso di problemi l’area commenti è a vostra totale disposizione.

Buon lavoro.

AGGIORNAMENTO 27/10/2011
In seguito ad alcune segnalazione di malfunzionamento dell’ultimo set di istruzioni (la pulizia dei vecchi file di sessione obsoleti), ho voluto modificare lo script per far si che utilizzi robocopy, quest’ultimo lancerà l’istruzione che si occupa in modo totalmente automatico di mettere da parte i file più vecchi di 7 giorni (minage:7, valore da voi modificabile) per poi essere eliminati tutti in seguito (rd %windir%\..\temp\OldSessions /s /q). Il set di istruzioni è stato portato alla versione 0.4 sia in questo articolo che nel file ZIP su GxWare. Nel caso in cui vi manchi il robocopy sarà possibile scaricarlo cliccando qui, occorrerà inserirlo nella cartella System32 sotto C:\Windows (dove C:\ identifica la lettera assegnata al disco fisso che contiene l’installazione del sistema operativo, ovviamente)
AGGIORNAMENTO 11/07/2011
Grazie alla segnalazione di Godai (vedi: forum.mozillaitalia.org/index.php?topic=51220.msg332626#msg332626) ho corretto un errore presente in riga 21 che tentava di andare a cercare la cartella Utente del sottoscritto. Nello script dedicato al pubblico non sarebbe dovuto comparire quell’indirizzo, utilizzato invece durante i test sulla mia macchina. Mi scuso per la svista, ho già provveduto a modificare lo script nell’articolo e nell’area download di GxWare. La versione è stata modificata, passando dalla 0.2 alla 0.3 attuale.

Mappare stampanti di rete con VBScript

Problematica semplice: una stampante di rete nuova, diversi PC che devono poterla utilizzare, non c’è kix che può aiutarmi ma c’è Active Directory con il suo Netlogon sempre valido. Dato che spiegare agli utenti come mapparsi una stampante potrebbe diventare una delle missioni più difficili di questo mondo e data l’urgenza della cosa, un piccolo trucco in VBScript può venire in soccorso per mappare tutto ciò che desideriamo in pochissimi secondi.

Mano al codice!

Dando per scontato che la stampante sia correttamente installata (e quindi condivisa) su un server raggiungibile dagli utenti di dominio, aprite un qualunque editor di testo (io utilizzo Notepad++) e inserite questo semplice codice VBScript che servirà allo scopo:


'
' Printers.vbs - Windows Logon Script.
' Gioxx - giovanni@solone.it
' Stampante: NOME STAMPANTE, UFFICIO, PIANO, STABILE (varie informazioni che volete salvare)
'
Set objNetwork = CreateObject("WScript.Network")
objNetwork.AddWindowsPrinterConnection "\\SERVERSTAMPANTI\NomeCondivisioneStampante"

Ovviamente stando attenti a modificare il nome del server dove la stampante è installata (SERVERSTAMPANTI) e il nome della condivisione della stessa (NomeCondivisioneStampante). Salvate ora il file come “NomeChePreferite.vbs” (per comodità io continuerò a riportare il file come NomeCondivisioneStampante.vbs) e posizionatelo in una cartella raggiungibile dagli utenti di dominio (potreste tenere il VBS sullo stesso server stampanti, magari in una diversa cartella condivisa che chiamerete Script).

Due “stupide” righe che vi permettono di non fare intervenire l’utente e fargli comparire la stampante tra quelle per lui disponibili con il minimo sforzo. Per far si che questo accada in modo totalmente automatico e silente all’atto del login al dominio, sarà necessario andare a modificare il batch di netlogon inserendo in una qualsiasi posizione la seguente stringa:

Cscript \\SERVERSTAMPANTI\Script\NomeCondivisioneStampante.vbs

Ottenendo un risultato che potrebbe essere molto simile al seguente (è una semplice ipotesi, io mi baso su una situazione vista e gestita):

@echo off
net use X: /delete /y
net use X: \\SERVER\CARTELLA
call %logonserver%\netlogon\altroscript.bat
Cscript \\SERVERSTAMPANTI\Script\NomeCondivisioneStampante.vbs

Così facendo -a caricamento del proprio desktop terminato- si potrà notare la stampante appena mappata nella propria cartella Stampanti e Fax. L’utente potrà ora utilizzare la stampante e voi vi sarete risparmiati minuti di spiegazioni al telefono ;)

Buon lavoro.

P.S. Nel caso in cui questo articolo “non vi basti“, vi ricordo che qualche tempo fa ho spiegato come utilizzare il regedit per mappare qualsiasi stampante!

Sophos antivirus: migrazione tra active directory, kix e batch

Un titolo piuttosto complesso, me ne rendo conto. Dato che a breve con molta probabilità Sophos Experts Italy sarà archiviato (numeri che poco convincono, collaborazione pressoché nulla, a meno che qualcuno non mi scriva in merito due righe a breve) ricomincio a scrivere articoli riguardanti le piattaforme Sophos sul mio blog, convinto che possano avere maggiore visibilità e andare ad arricchire la serie di articoli già pubblicati in passato.

Stavolta vorrei parlarvi di una casistica analizzata presso un cliente che ha deciso di aggiornare la sua console 3 passando alla nuova 4, basandosi su un sistema Windows Server 2008 a 64 bit (una configurazione che raramente vedo presso altre aziende, ancora oggi).

Il problema? Dopo l’upgrade del software installato sul server, i client hanno deciso di non aggiornarsi con i nuovi motori antivirus, motivo per il quale i clienti rimangono scoperti dal rilascio dei nuovi aggiornamenti da parte della nota azienda di sicurezza informatica. La risoluzione? Forzare un’installazione del nuovo antivirus nel momento in cui le macchine (gli utenti) fanno ingresso nel dominio.

A cosa appoggiarsi

Una stringa di controllo in Kix32 (software sempre più utilizzato, associato al netlogon) e un banale script batch che carichi il software necessario. La procedura è presto spiegata:


$PGRFILE=%Programfiles%+"\Sophos\Sophos Anti-Virus\SAVControl.dll"
if exist ($PGRFILE)
 ? "Antivirus Aggiornato" @CRLF
ELSE
 ? "Installo Antivirus" @CRLF
 ;shell '%comspec% /C '
 shell "cmd /c "+$LogonServer+"\netlogon\instSophos.bat /scrub"
ENDIF
EXIT

Perché il controllo su una DLL? Sophos 7 (versione dell’antivirus gestita dalla console 3) non ha tra i suoi file quella libreria. E’ invece presente tra i file di una installazione della versione 9 (gestita dalla console 4).

A questo punto sarà necessario rimuovere il precedente antivirus e partire con l’installazione del nuovo. Per andare ancora più sul sicuro ho preferito lanciare prima il CRT (Competitor Removal Tool) ed in seguito il setup:


@ECHO OFF
echo Verifica e installazione Sophos Antivirus ...
echo Non chiudere questa finestra.
echo;
REM --- Deploy to Windows 2000/XP/2003
\\SERVERSOPHOS\SophosUpdate\CIDs\S000\SAVSCFXP\crt\avremove.exe
\\SERVERSOPHOS\SophosUpdate\CIDs\S000\SAVSCFXP\Setup.exe -updp "\\SERVERSOPHOS\SophosUpdate\CIDs\S000\SAVSCFXP" -user "DOMINIO\AMMINISTRATORE" -pwd "PASSWORD" -mng yes
REM --- End of the script
:_End

L’operazione richiederà pochi minuti (a patto che le macchine non siano particolarmente datate o con risorse hardware molto limitate) e verrà ovviamente eseguita una sola volta per postazione. Il controllo (dalla seconda connessione al dominio) fallirà e l’utente avrà rapido accesso ai suoi dati ed al suo desktop.

Buon lavoro :)

AVG 9: aggiornamento e rimozione notification area

Grisoft (ora con nuova denominazione AVG Technologies) ha finalmente rilasciato la versione “9” del suo ormai celebre antivirus, anche in versione gratuita, liberamente scaricabile (per uso personale, meglio ricordarlo) dal solito free.avg.com o dal mirror messo a disposizione da HTML.it.

Oltre a consigliarvi caldamente l’aggiornamento per le migliorie apportate e per il semplice motivo che da qui a breve (relativamente) verrà terminato il supporto alla versione 8.5, voglio ricordare che è sempre bene aggiornare in modalità “personalizzata il proprio software. Questo perché -ancora una volta, proprio come i suoi predecessori- AVG 9 tenterà di installare componenti aggiuntivi nel browser predefinito.

Ergo: durante l’upgrade (potete non disinstallare la vecchia versione, farà tutto il nuovo setup) selezionate quando possibile la modalità personalizzata e togliete i segni di spunta su LinkScanner e sulle Lingue aggiuntive installate (l’inglese, nello specifico) che occupano spazio su disco senza apportare migliorie imperdibili:

Le restanti opzioni dipendono dalla vostra attuale situazione. Se avete installato Outlook selezionerete sicuramente “Plug-in di Microsoft Outlook” nella scansione della posta elettronica. Avendo io Mozilla Thunderbird ho chiaramente selezionato l’opzione subito successiva.

# rimuovere la Notification Area

Sarete felici di sapere che ancora una volta il mio script funziona egregiamente, nulla è stato modificato dalla precedente 8.5. Andate quindi all’indirizzo:

downloads.gxware.org/index.php?dir=articoli/avg8/&file=StopNotification.bat

Salvate la pagina come “StopNotification.bat“, spostate lo script appena salvato nella cartella di AVG (di regola C:\Programmi\AVG\AVG9) e avviatelo con un doppio clic. In pochi secondi il processo sarà completato. Aprite ora la console di AVG e noterete un pannello pulito, senza Notification Area :-)

Buon aggiornamento!

Sophos: batch backup SQL

Un processo troppo spesso sottovalutato è quello del backup, talvolta anche in azienda (sigh!). La colpa viene sempre data al poco tempo a disposizione, alla poca voglia forse, sporadicamente del non sapere dove / come / quando fare un backup. Oggi ho notato che ho predicato bene ma ho razzolato male fino all’ultimo momento, il server antivirus aziendale non effettuava regolare backup SQL quotidianamente.

Per questo motivo ho deciso di rimediare e mettere in piedi un processo automatico che svolge lo sporco lavoro ogni notte, operazione schedulata alle 3.00 per l’esattezza.

Mi sono servito ancora una volta di uno script batch, il 7-Zip Command Line Version, l’eseguibile sleep presente nel Windows 2003 Server Resource Kit e di un secondo batch già presente in tutte le installazioni di Sophos (%programfiles%\Sophos\Enterprise Console\DB\BackupDB.bat).

Prima di partire vi invito a copiare il 7za.exe ed lo sleep.exe all’interno della cartella Windows\System32 della vostra macchina, così da poter essere richiamati facilmente dal prompt di MS-Dos.

Lo script è davvero semplice, può essere salvato in qualsiasi posizione. Nel mio caso ho deciso di lasciarlo in %programfiles%\Sophos.

Prima il codice, poi la spiegazione :-)


@echo off
cls
echo Backup Database SOPHOS su macchina locale
echo;
echo Controllo esistenza cartella bck su disco C ...
echo;
if not exist C:\bck mkdir C:\bck
cd "%programfiles%\Sophos\Enterprise Console\DB"
echo Avvio procedura di backup Database ...
echo Tempo di attesa: 20 sec.
for /f "tokens=1-3 delims=/- " %%a in ('date /t') do set xdate=%%a_%%b_%%c
start /min BackupDB.bat C:\bck\sophos_%xdate%.sql SOPHOS
sleep 20
echo;
echo Backup effettuato.
echo;
echo Compressione con 7zip ...
echo;
7za.exe a -t7z -mx5 C:\bck\sophos_%xdate%.7z C:\bck\sophos_%xdate%.sql
echo;
echo Cancellazione file temporanei ...
del C:\bck\sophos_%xdate%.sql
echo;
echo Processo terminato

La cartella usata per tenere in piedi i backup è la C:\bck, potete tranquillamente cambiarla sostituendola nello script. Sappiate comunque che il batch di Sophos gestisce meglio i nomi di cartelle senza spazi al loro interno, regolatevi di conseguenza ;)

Per differenziare le versioni dei backup ho deciso di includere la data. Il parametro funzionante sotto DOS è “%date%” che però restituisce un valore come questo qui di seguito:


C:\Documents and Settings\Giovanni>echo %date%
24/07/2009

C:\Documents and Settings\Giovanni>

motivo per il quale diventa necessario sostituire quegli slash con qualcosa di più compatibile. Il ciclo for inserito nello script permette di farlo inserendo gli underscore perfettamente compatibili con il batch di Sophos (e con il mio!), generando un nuovo valore %xdate% richiamabile in qualsiasi momento.

Lo sleep.exe viene richiamato nel frattempo che va in funzione lo “start BackupDB.bat” che si preoccupa di effettuare in una finestra minimizzata il file SQL di esportazione dall’Enterprise Console. 20 secondi bastano e avanzano per un file che racchiude informazioni per un totale di circa 200 macchine. Nel vostro caso potrebbe essere necessario aumentare il numero di secondi (dipende da quanto è grande l’esportazione).

Il funzionamento (molto elementare) del batch BackupDB realizzato da Sophos è spiegato nel /? lanciato da DOS, lo riporto:


C:\Program Files\Sophos\Enterprise Console\DB>BackupDB.bat

Usage:
 BackupDB backup_file_path [instance_name]

C:\Program Files\Sophos\Enterprise Console\DB>

altrimenti bisognerebbe far riferimento alla procedura manuale, spiegata in un documento della KB Sophos.com all’indirizzo:

sophos.com/support/knowledgebase/article/27265.html

Finito il backup si passa alla compressione grazie alla riga di comando del 7za precedentemente copiato nella Windows\System32. La riga che lancia la compressione del file SQL indica all’applicativo la necessità di generare un file 7z (-t7z) con compressione normale dandogli lo stesso nome del file originale. Per conoscere tutti i segreti della riga di comando di 7za vi rimando ad un fantastico documento, davvero completo:

http://dotnetperls.com/7-zip-examples

Il processo di compressione potrebbe anche impiegare diversi minuti (15 / 20 talvolta) ma schedulando questo lavoro a notte fonda non penso ci siano grossi problemi di sovraccarico della macchina, giusto? ;-)

Come chicca finale si cancella il file *.SQL recuperando spazio sul disco e mantenendo solo il .7z compresso.

Basterà ora aggiungere alle Operazioni Pianificate del sistema il lancio quotidiano (o settimanale se più vi aggrada) del batch, all’ora esatta desiderata.

Cheers.

Page 1 of 212»