Batch: update di massa per UltraVNC

| |

Sto per tirarvi fuori il solito post “viaggio mentale” che spiega un metodo valido e funzionante (provato su strada) per aggiornare in modo massivo la versione di UltraVNC utilizzata magari nella vostra rete LAN, inserendo di default alcune impostazioni del programma, ivi compresi gruppi di dominio autorizzati a fare assistenza remota!

# conoscere il campo

La casistica affrontata riguarda una rete aziendale con dominio Microsoft, tutte macchine XP regolarmente aggiornate (e qualche Vista), utenti non amministratori del proprio PC, installazioni di UltraVNC (diverse versioni mai allineate) e RealVNC 4 miste. Tutti i computer montano diverse unità di rete all’avvio, tra queste si trovano la cartella personale ed una cartella generica per le installazioni software. Proprio grazie a quest’ultima –e qualche trucco batch– sarà possibile distribuire l’ultima versione dell’UltraVNC in modo totalmente automatizzato.

# cosa serve per partire

Basterà installare su una qualsiasi macchina (la prima, una cavia) l’UltraVNC (ultima release disponibile sul sito web ufficiale) configurandolo esattamente come vogliamo diventi su tutte le macchine della rete. Si parte avviando una piccola utility fornita nelle ultime release di UltraVNC:

uvnc_settings.exe” generalmente in C:ProgrammiUltraVNC (o Program Files per Windows Vista)

Questa permette di modificare e salvare (in un file .ini, ndr) tutte le impostazioni della parte server installata sulla macchina. Un file che –volendolo trasportare altrove con il giusto metodo– imposta già il comportamento di una nuova installazione UltraVNC:

Batch: update di massa per UltraVNC 1

Fatte le dovute modifiche, il file ultravnc.ini sarà esportabile altrove. Un consiglio? Create sul desktop (o una posizione a scelta) una cartella nella quale raccogliere tutti i file necessari alla migrazione, compresi gli script che andremo a creare tra breve, è nettamente più comodo.

Tocca ora ai gruppi di dominio autorizzati a collegarsi in VNC sulla macchina. Una volta inseriti a mano sul “PC Cavia“, UltraVNC salverà le informazioni in una chiave di registro che si trova in:

[HKEY_LOCAL_MACHINESOFTWAREORL]

il tutto codificato in HEX. Non preoccupatevi del contenuto ed esportate il .reg nella cartella precedentemente creata. Dovrebbe contenere una sola sottochiave ([HKEY_LOCAL_MACHINESOFTWAREORLWinVNC3]), dovrebbe assomigliare a qualcosa del genere:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESOFTWAREORL]

[HKEY_LOCAL_MACHINESOFTWAREORLWinVNC3]
"ACL"=hex:02,00,50,00,02,00,00,00,00,00,24,00,03,00,00,00,01,05,00,00,00,00,00,
 05,15,00,00,00,6f,20,**,******,********0,00,24,00,
 **,****,*****,00,00,00,05,15,0*,**,00,6f,20,c3,5a,ff,1a,ef,4c,bf,
 7d,f7,6d,69,35,00,00

(chiaramente gli asterischi sono stati messi a random per offuscare il contenuto del .reg da me utilizzato).

Approfittate di questo momento per inserire nella solita cartella anche PSKill, tool della SysInternals (Microsoft) facente parte della suite PSTools, disponibile gratuitamente sul sito Microsoft:

technet.microsoft.com/en-us/sysinternals/bb896649.aspx

Servirà per terminare in modo sicuro il servizio winvnc eventualmente già aperto sulla macchina. Funziona allo stesso modo del taskman / taskkill via DOS ma in casi un pò più “recividi” con processi particolarmente rognosi da buttare giù, funziona decisamente meglio. L’unico problema è che l’applicativo, aperto per la prima volta sulla macchina, chiederà se accettare o meno la licenza di utilizzo, il tutto facilmente aggirabile tramite file di registro da avviare sulla macchina ospite:

Windows Registry Editor Version 5.00

[HKEY_USERSS-1-5-21-1522737263-1290738431-1844936127-13971SoftwareSysinternalsPsKill]

"EulaAccepted"=dword:00000001

Ultimo passaggio di “preparazione” è il file di informazioni di installazione *.inf, contenente le indicazioni su ciò che verrà installato sulla macchina, tutto abbastanza comprensibile con un minimo di impegno ;)

[Setup]
Lang=en
Dir=C:ProgrammiUltraVNC
Group=UltraVNC
NoIcons=0
SetupType=full
Components=ultravnc_server,ultravnc_viewer
Tasks=installservice,startservice

in sintesi: verrà installato UltraVNC nella directory predefinita (C:ProgrammiUltraVNC calcolando che stiamo parlando di client XP italiani), interfaccia in lingua inglese, senza icone sul Desktop, con componenti Server e Viewer tenendo conto che il servizio ultravnc_server verrà inserito tra quelli riconosciuti da Windows (Pannello di Controllo / Strumenti di amministrazione / Servizi) ed avviato da subito.

Basterà incollare quanto sopra riportato su un nuovo file Blocco Note (o editor di testo equivalente) e salvare il tutto come ultravnc.inf nella cartella della migrazione.

# contenuto finale della cartella

Se avete seguito alla lettera l’articolo (fino ad ora, chiaramente) dovreste trovarvi davanti ad una cartella così composta (grosso modo):

Batch: update di massa per UltraVNC 2

Andiamo ora a vedere come creare quel file install.bat che si occuperà di:

  • rilevare ed eventualmente disinstallare versioni di RealVNC 4 o precedenti
  • rilevare ed eventualmente disinstallare vecchie versioni di UltraVNC
  • installare l’ultima versione disponibile di UltraVNC caricata nella cartella dell’update con le impostazioni dettate dal file di informazioni d’installazione
  • impostare automaticamente le opzioni dell’UltraVNC appena installato con il file di configurazione precedentemente generato
  • aggiungere i gruppi autorizzati alla connessione sulla macchina che chiede assistenza e che ha appena “subìto” l’aggiornamento forzato

Mani ad un editor di testo, si parte.

# install.bat

Una veloce occhiata alle procedura permetterà di capire come strutturare poi uno script batch finale che controllerà dapprima la presenza degli applicativi per azionare in seguito le funzioni necessarie all’upgrade.

Stop dei servizi, è necessario

Lo stop dei servizi è chiaramente necessario per poter lavorare, a patto che siano effettivamente avviati. Per sicurezza è meglio provare a chiuderli a prescindere dal loro stato, giusto no? :)

echo *** Stop Servizi ***
echo.

net stop "uvnc_service"
net stop "VNC server"

Chi c’è c’è, gli altri si disinstallano

Ciò che va controllato è sicuramente la presenza del RealVNC 4 e di eventuali altre versioni di UltraVNC non pari all’ultima da noi scelta. Per questo motivo sarà necessario imporre al programma di effettuare da subito un “paio di ricerche incrociate“:

if exist %programfiles%RealVNCVNC4 goto REALVNC
if not exist %programfiles%UltraVNC goto INSTALL

A cosa corrispondono quei GOTO? Lo scopriamo subito :)

Rilevare e disinstallare RealVNC 4

Tutto molto semplice e, come ogni programma che si rispetti, prevede un parametro silent che si occuperà di fare il tutto senza che l’utente si accorga di nulla, peculiarità fondamentale in casi come questo:

:REALVNC
echo *** Rimozione RealVNC ***
"%programfiles%RealVNCVNC4unins000.exe" /verysilent /norestart
cd %programfiles%RealVNC
rmdir VNC4 /s /q
cd ..
rmdir RealVNC /s /q
echo.
echo Fatto, procedo.
goto CONTROLLO

Prevista chiaramente la distruzione delle cartelle riguardanti l’applicativo, proprio nelle ultime righe “rmdir“.

Rilevare e disinstallare vecchie versioni di UltraVNC

Anche in questo caso il programma si assicurerà che esista un’installazione di UltraVNC procedendo poi con una disinstallazione silente attraverso il precedente utilizzo di PSKILL per terminare il file eseguibile molto probabilmente ancora aperto:

:CONTROLLO
echo.
echo *** Rimozione vecchia versione UltraVNC ***
echo.

if exist %programfiles%UltraVNC "%programfiles%UltraVNCunins000.exe" /verysilent /norestart
if exist %programfiles%UltraVNC regedit /s \POSIZIONECARTELLAUPDATEpskill.reg
if exist %programfiles%UltraVNC \POSIZIONECARTELLAUPDATEpskill winvnc.exe
if exist %programfiles%UltraVNC rd %programfiles%UltraVNC /s /q
goto INSTALL

Prima di lanciare il PSKILL noterete l’associazione forzata del file di registro che permetterà di saltare la fase di accettazione licenza di utilizzo dell’applicativo. Inutile specificare che al posto di “POSIZIONECARTELLAUPDATE” dovrete sostituire la cartella esatta sul server che sta ospitando gli script ed i file di aggiornamento.

Installazione e configurazione automatica UltraVNC

Ultimo passo per concludere la procedura automatizzata. La funzione si occuperà di installare l’UltraVNC passandogli tutti i parametri decisi in precedenza, comprese password, gruppi di dominio e quant’altro ancora. Lo script non è neanche così complicato, i comandi diretti e le variabili utilizzate sono opera di Stefano (grazie!), ormai fondamentale quando si parla di scriptare in batch qui in ufficio :) Io non ho fatto altro che dare una veloce occhiata e mettere a posto qualche “piccola gaffe“:

:INSTALL
echo.
echo *** Installazione nuova versione UltraVNC ***
echo.
if not exist %programfiles%UltraVNC mkdir %programfiles%UltraVNC
copy \POSIZIONECARTELLAUPDATEultravnc.ini "%programfiles%UltraVNC"
regedit /s \POSIZIONECARTELLAUPDATEuvnc.reg
"\POSIZIONECARTELLAUPDATEUltraVNC_1.0.5.3_Setup.exe" /verysilent /loadinf=\POSIZIONECARTELLAUPDATEultravnc.inf
goto FINE

:FINE
echo Processo di aggiornamento terminato

Una volta creata la directory nella quale si andrà ad installare l’applicativo, si copia il file di impostazioni e si associa quel .reg precedentemente creato forzando il tutto da shell (regedit /s). Ora si potrà finalmente lanciare il setup, rigorosamente in silent, facendogli recuperare le informazioni che avevamo stabilito inizialmente (/loadinf=…).

Il gioco è fatto, UltraVNC si installerà e avvierà il servizio server al quale noi potremo “chiedere udienza” dopo poco per la prima volta, a conferma del corretto funzionamento dello script batch!

# avvertenze

La buona riuscita dell’installazione (o dell’aggiornamento) richiede l’essere puntigliosi nel controllare i puntamenti ai giusti server, le autorizzazioni in lettura per gli utenti di dominio, la presenza di tutti i file descritti. Ricordatevi che lo script va lanciato come amministratore di dominio o almeno della macchina locale (e qui può aiutarvi un psexec anche da remoto). Nel caso in cui vi dia problemi provate a segnalarmelo nei commenti per ottenere supporto.

Una versione completa del codice sorgente è disponibile su /dev:

dev.gxware.org/?15

chiaramente copiabile e modificabile a patto che, torno a ripetere, anche tutti gli altri file risiedano nella stessa cartella del batch che andrete a lanciare.

In un articolo che spero di poter scrivere e pubblicare a breve vi spiegherò come, attraverso l’ennesimo script, potrete lanciare a ripetizione il comando di psexec su tutte le macchine di una lista PC precedentemente generata, così da avviare anche questo script di mass-update senza il minimo sforzo.

Buon lavoro :)

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Commento
Oldest
Newest Most Voted
Inline Feedbacks
View all comments