Tag Archive - MS-DOS

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!

Dropbox e Proxy NTLM: come metterli d’accordo

Un post tecnico a metà tra il promemoria e la divulgazione di un workaround, dedicato a chi utilizza Dropbox e lavora nelle reti che usano proxy con autenticazione NTLM. La risoluzione di un problema dovuto ad una momentanea mancanza del noto applicativo di sincronizzazione / backup dei propri dati personali tra le postazioni possedute e il server centrale che conserva le copie per il versioning.

In sintesi, di cosa si tratta:

Windows Challenge/Response (NTLM) is the authentication protocol used on networks that include systems running the Windows operating system and on stand-alone systems.

The Microsoft Kerberos security package adds greater security than NTLM to systems on a network. Although Microsoft Kerberos is the protocol of choice, NTLM is still supported. NTLM must also be used for logon authentication on stand-alone systems. For more information about Kerberos, see Microsoft Kerberos.

NTLM credentials are based on data obtained during the interactive logon process and consist of a domain name, a user name, and a one-way hash of the user’s password. NTLM uses an encrypted challenge/response protocol to authenticate a user without sending the user’s password over the wire. Instead, the system requesting authentication must perform a calculation that proves it has access to the secured NTLM credentials.

Interactive NTLM authentication over a network typically involves two systems: a client system, where the user is requesting authentication, and a domain controller, where information related to the user’s password is kept. Noninteractive authentication, which may be required to permit an already logged-on user to access a resource such as a server application, typically involves three systems: a client, a server, and a domain controller that does the authentication calculations on behalf of the server.

msdn.microsoft.com/en-us/library/aa378749%28VS.85%29.aspx

Per capirci: l’autenticazione NTLM è alla base degli appliance Sophos (serie WS), evidentemente non troppo permissiva per coloro che vogliono utilizzare Dropbox e possono accedere alla rete internet solo attraverso le proprie credenziali di dominio.

Oltre ad attendere che il team di sviluppo faccia lo sporco lavoro di rendere compatibile il protocollo con il passaggio delle credenziali impostate manualmente nelle preferenze (tanto per azzardare un’ipotesi) esiste un workaround dichiarato anche nelle FAQ pubblicate nel sito ufficiale del prodotto:

dropbox.com/help/22

La parola magica è “Cntlm” e permette di far combaciare le richieste dell’applicativo e dell’autenticazione NTLM mettendosi in mezzo tra i due (come a creare un nuovo proxy da far sfruttare a Dropbox). Configurarlo e utilizzarlo è semplicissimo, scaricarlo è completamente gratuito, il progetto risiede su SourceForge:

cntlm.sourceforge.net

Potete scaricare l’applicativo per Windows, Linux o MacOS. Io baserò il mio documento sul primo sistema (quello che uso sul portatile aziendale). Basterà scaricare CNTLM cliccando qui (qui per tutti gli altri sistemi), scompattarlo in una qualsiasi cartella del vostro HD e avviare il file “setup.bat“. Questo copierà alcuni file nel sistema e creerà il servizio “Cntlm Authentication Proxy“, che sarà visibile semplicemente aprendo la finestra dei servizi della macchina (Start / Esegui / services.msc), come in figura:

Cntlm Authentication Proxy - Services.msc

Prima di poter avviare il servizio sarà però necessario configurare le proprie credenziali in un file INI contenuto nella cartella del programma. Lo trovate in C:\Programmi\Cntlm, file cntlm.ini. Basterà inserire lo username, la password ed il dominio, specificare l’indirizzo IP (o il nome) del proxy aziendale, scegliere una porta del sistema locale dove far puntare poi Dropbox e salvare. Uscire quindi dal file per concludere l’operazione:

CNTLM - Configurazione parametri utenza sul proxy

Fatto ciò si potrà avviare CNTLM per poter lavorare con Dropbox. Basterà aprire un prompt di MS-DOS e lanciare la stringa “net start cntlm“, come in figura:

CNTLM - Avviare il servizio - net start cntlm

Fatto questo basterà far passare la comunicazione Dropbox (client / server) dal PC locale che sarà utilizzato come proxy. Andare nelle impostazioni del client (tasto destro sull’icona nella tray, Preferences) ed inserire manualmente le informazioni, come in figura (occhio alla porta se l’avete modificata nel file di configurazione di CNTLM):

Dropbox - Configurazione tramite CNTLM

Così facendo spunterà fuori l’icona attività di Dropbox e i vostri documenti ricominceranno a sincronizzarsi con il server e con le altre postazioni che sfruttano lo stesso account! Va da se che per poter bloccare il servizio basterà lanciare la stringa “net stop cntlm“, sempre utilizzando il prompt dei comandi:

CNTLM - Fermare il servizio - net stop cntlm

Mi pare non manchi proprio nulla a questo punto. Per dubbi e perplessità -come sempre- c’è l’area commenti.

Buon lavoro! :-)

Samsung NC10: da Zero a Seven

Qualcuno forse si ricorderà di quell’appello lanciato sui social network poco tempo fa: volevo far saltare fuori un modello di netbook papabile per l’acquisto e l’affiancamento alle già numerose macchine del parco personale. Qualche risposta da Facebook, zero da Friendfeed (mi aspettavo più risposte da quest’ultimo), una da Twitter e diverse da amici nella vita reale. Alla fine ho voluto mettere le mani sul Samsung NC10, proprio come quello in foto. Scelto da due colleghi di lavoro per la quotidiana guerra in helpdesk, l’ho acquistato per poter gironzolare in completa libertà e avere sempre i miei dati a disposizione.

In questo post vorrei descrivere il passaggio da Zero a Seven: l’acquisto di un NC10 (o modello superiore) pulito ed un’installazione manuale di Windows 7 da chiave USB (la chiave dovrà avere almeno 4 GB di spazio libero, il netbook non è provvisto di drive ottico).

Serviranno giusto un paio di utility azzeccate e una copia di Windows 7 dalla quale estrarre tutti i file di cui avete necessità. Chiaramente questa prima parte di operazione andrà fatta da un PC provvisto di drive ottico -se utilizzate il DVD di Windows 7- altrimenti ci si potrà arrangiare utilizzando l’ISO dello stesso disco, magari scaricata da Technet (per chi possiede l’abbonamento).

# preparare la chiave USB

Inserite la chiavetta USB nel vostro PC, scaricate l’utility “HP USB Disk Format Tool” e avviatela selezionando l’unità appena caricata. Formattazione in NTFS, nome “Windows 7” (o qualunque altra cosa voi vogliate, sia chiaro!) e modalità veloce, basterà per preparare il dispositivo.

Dopo aver ricevuto conferma dell’avvenuta formattazione scaricate “MBRWizard” e scompattatelo, servirà per rendere avviabile la chiave. Aprite un prompt di MS-DOS (Start / Esegui / CMD), navigate fino alla cartella che contiene l’applicativo e lanciate il comando “MBRWiz.exe /list“, individuate il numero di dispositivo assegnato alla chiave USB e lanciate il comando “MBRWiz.exe /disk=NUMERODISCO /active=1” dove NUMERODISCO sarà chiaramente sostituito dal numero assegnato al drive (occorrerà confermare l’operazione semplicemente premendo Y quando richiesto), proprio come in figura:

MBR Wizard - Lista dispositivi e rendere avviabile la chiave USB

Nell’immagine potete notare che alla chiave USB (da 8 GB anziché da 4, poco importa) corrisponde il numero 1, la sintassi utilizzata è quindi “MBRWiz /disk=1 /active=1“.

Fatto ciò bisognerà copiare le informazioni di boot dal DVD (o dalla ISO) di Windows 7. Per poterlo fare basterà lanciare (sempre da prompt di MS-DOS) la stringa “D:\boot\bootsect /nt60 F:” dove D: è la lettera del drive ottico e F: quella assegnata alla chiave USB (da cambiare quindi all’occorrenza), come in figura:

NTFS Filesystem Bootcode da Windows 7 (DVD) a chiave USB

Fatto questo si può passare alla copia dei file dal DVD (o immagine ISO) alla chiave USB.

# copia dei file di Windows 7

Copiare i file da un lato all’altro è cosa facile. Ancora una volta il prompt di MS-DOS risolve elegantemente la grana con una sola stringa. Partendo dal presupposto che le lettere rimangono le medesime del paragrafo precedente, un XCopy è più che sufficiente, “xcopy d: f:\ /e /f“, come in figura:

XCopy - I file dal DVD di Windows 7 alla chiave USB

Inutile dire che D:\ è la lettera assegnata al drive ottico mentre F:\ è la lettera assegnata alla chiave USB. I parametri aggiuntivi servono rispettivamente a copiare directory e sottodirectory, comprese quelle vuote (/e) e mostrare i nomi dei file di origine e destinazione durante la copia (/f).

L’operazione durerà qualche minuto, staccate e andate a prendere un caffè, vi farà solo bene :-)

# la chiave è pronta

Terminata la copia, il procedimento di preparazione è terminato. Rimuovete il dispositivo e inseritelo in una porta libera del netbook, quindi avviatelo. Se tutto è filato liscio vedrete comparire la schermata di caricamento installazione di Windows 7! Non resta quindi che procedere con il wizard ed avere un Windows 7 nuovo fiammante in 20 minuti circa ;-)

Samsung NC10 e Windows 7

# risorse aggiuntive

Volete qualche utile link per Samsung NC10 e Windows 7? Una pagina wiki riassume quanto c’è da sapere:

sammywiki.com/wiki/NC10_Windows_7

Io sono partito con un Samsung NC10 completamente pulito (no sistema operativo, no cd / dvd di ripristino). Per coloro che possiedono già questo stupendo oggetto e volessero mantenere l’attuale installazione di Windows dando però a Seven una partizione, suggerisco di fare visita al blog di Nick Rich per scoprire la procedura corretta che vi permetterà di avere un “dual-boot“:

techiejottings.blogspot.com/2009/05/windows-7-installation-on-samsung-nc10.html

Prima di chiudere aggiungo un “flash“: giusto un’ora fa (circa) IntelliAdmin ha pubblicato un ottimo post che cattura il succo di questo mio articolo e lo facilita di gran lunga poggiandosi su una utility che rende automatici i passaggi sopra citati:

intelliadmin.com/index.php/2010/03/install-windows-7-from-a-flash-drive-free-tool

A voi la scelta della via da percorrere :-)

Buon lavoro!

Firefox 3.5: ottimizzare il DB con VACUUM?

Scopro e studio un post uscito qualche giorno su Geekissimo, incuriosito da un test fatto da un amico sul forum di Mozilla Italia. Mi dice di aver provato quello strano tool disponibile per il download, dovrebbe riuscire a velocizzare l’avvio di Firefox.

Collegamento ad un anonimo Dropbox, scarico e apro dapprima con 7-Zip ed in seguito con Notepad++ per capire di cosa si tratta. Tutto si riassume nell’eseguibile di SQLite ed in un file batch che lancia un’istruzione secca sfruttando l’eseguibile stesso:


@FOR %%G IN (*.sqlite) DO ( sqlite3 %%G "VACUUM" )

Il comando VACUUM è ufficialmente sfruttato da SQLite e permette di:

When an object (table, index, or trigger) is dropped from the database, it leaves behind empty space. This empty space will be reused the next time new information is added to the database. But in the meantime, the database file might be larger than strictly necessary. Also, frequent inserts, updates, and deletes can cause the information in the database to become fragmented – scrattered out all across the database file rather than clustered together in one place.

In parole molto povere: dato un database di valori che vengono costantemente aggiornati (nel caso di Firefox succede con tutti i dati: segnalibri, password, cookie e altro ancora) la cancellazione di un qualsiasi dato lascia uno spazio “scoperto” (privo di valore) ma pur sempre conservato all’interno del DB. Il tutto succede fino al successivo riempimento di quello spazio. Ciò vuol dire che ci si trova davanti ad una normale “frammentazione” (lo stesso succede con l’hard disk ed un regolare uso del sistema operativo). Impossibile porre paletti a questa costante crescita, soprattutto con il passare del tempo.

Per questo motivo sarà possibile lanciare il comando VACUUM per:

The VACUUM command cleans the main database by copying its contents to a temporary database file and reloading the original database file from the copy. This eliminates free pages, aligns table data to be contiguous, and otherwise cleans up the database file structure.

… copiare i valori in un DB temporaneo per poi spostarli (tutto in modo automatico) nel DB originale a fine pulizia, con conseguente guadagno di spazio occupato su disco.

# quanti DB SQLite possiedo?

E’ presto detto. In un profilo standard sarà possibile trovare (grosso modo) questi file:

C:\Documents and Settings\Giovanni\Dati applicazioni\Mozilla\Firefox\Profiles\XXXX.default>dir *.sqlite
Il volume nell’unità C non ha etichetta.
Numero di serie del volume: XXXX-YYYY

Directory di C:\Documents and Settings\Giovanni\Dati applicazioni\Mozilla\Firef ox\Profiles\XXXX.default

10/07/2009  17.51             7.168 content-prefs.sqlite
15/07/2009  16.43           495.616 cookies.sqlite
15/07/2009  16.35             9.216 downloads.sqlite
15/07/2009  16.50           299.008 formhistory.sqlite
30/06/2009  18.17             2.048 permissions.sqlite
15/07/2009  16.50         9.252.864 places.sqlite
06/07/2009  19.22             2.048 search.sqlite
25/05/2009  08.18            11.264 signons.sqlite
26/05/2009  09.57             3.072 webappsstore.sqlite
9 File     10.082.304 byte
0 Directory  132.868.112.384 byte disponibili

C:\Documents and Settings\Giovanni\Dati applicazioni\Mozilla\Firefox\Profiles\XXXX.default>

Parliamo di circa 9 MB che dopo l’ottimizzazione sono passati a quasi 8, trattandosi di puro testo (salvato nei DB) non è affatto male ;-)

# il tool

Si tratta di un banale codice (comunque merito all’averci pensato) realizzato da InfoSpyware.com, il suo nome è IniFox, è stato presentato nel post (in lingua originale, spagnolo):

infospyware.com/blog/acelera-el-inicio-de-firefox-con-inifox

ed è disponibile gratuitamente anche su GxWare.org.

# la procedura

Innanzi tutto è d’obbligo mettere il solito avviso, che non fa mai male …

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.

A questo punto i passi da seguire sono molto semplici, l’importante è aver scaricato e scompattato l’archivio contenente IniFox. Detto ciò, ecco il passo-passo:

  • CHIUDERE MOZILLA FIREFOX
  • Inserire i due file (batch & exe) di IniFox all’interno della cartella del proprio profilo. Per individuarla basterà consultare questo articolo nel support ufficiale di Mozilla Firefox: support.mozilla.com/it/kb/Profili#Individuare_la_cartella_del_profilo
  • Sarebbe bene fare un backup dei file *.sqlite dopo aver creato una cartella apposita. Personalmente ho optato per due veloci comandi dal prompt di MS-DOS, questo è quanto:

C:\Documents and Settings\Giovanni\Dati applicazioni\Mozilla\Firefox\Profiles\XXXX.default>mkdir backup_gioxx

C:\Documents and Settings\Giovanni\Dati applicazioni\Mozilla\Firefox\Profiles\XXXX.default>copy *.sqlite backup_gioxx
content-prefs.sqlite
cookies.sqlite
downloads.sqlite
formhistory.sqlite
permissions.sqlite
places.sqlite
search.sqlite
signons.sqlite
webappsstore.sqlite
9 file copiati.

C:\Documents and Settings\Giovanni\Dati applicazioni\Mozilla\Firefox\Profiles\XXXX.default>
  • A questo punto si potrà lanciare (doppio clic o sempre dal prompt di Ms-Dos) il file “IniFox.bat” e attendere la fine del processo.
  • Aprire ora Mozilla Firefox per notare (probabilmente) un minor tempo di caricamento dell’interfaccia principale.

Il processo può essere (ovviamente) ripetuto più volte nel tempo (magari lasciate passare una o due settimane tra un’ottimizzazione e l’altra) e -una volta tanto- non si tratta di applicativo invasivo che potrebbe mettere in pericolo i vostri dati (come invece spesso accade, nonostante si cerchi sempre di tenervi informati! ;)).

Cheers :-)

Batch: migrazione verso UltraVNC 1.0.6.0 (PRE)

Ricordate il post riguardante la migrazione di massa verso UltraVNC? Ho avuto modo di notare un comportamento anomalo da un cliente. Il concetto si riassume in: “Winvnc.exe va in crash ogni qual volta si tenta di aprire una finestra di Explorer” (non il browser, l’esplora risorse di Windows ;)) … nella casistica migliore si otteneva un freeze della finestra client per poi subire il “Socket error” nel caso in cui si tentasse la riconnessione.

Provate ad immaginare la felicità dell’utente ogni qual volta c’era da avviare un PsKill da remoto per buttare giù i processi appesi di winvnc.exe nell’attesa di avviarne uno nuovo funzionante …

Tentando di non migrare più postazioni possibili (dove ho appositamente lasciato RealVNC 4 o UltraVNC 1.0.2) e tenendo sotto costante controllo il forum di UltraVNC sono arrivato a testare il server (ed il viewer) della versione 1.0.6.0, non ancora ufficialmente rilasciata (quindi, prendetela come un “as-is” senza troppe garanzie, personalmente posso dirvi che funziona correttamente).

# cambio di programma

A monte c’era una richiesta più complessa dell’ultima volta. Lo script andrà inserito al logon, tra una mappatura di disco di rete ed una stampante per capirci, ciò vuol dire che dovrà essere capace di confrontare la versione del PC con quella sul server e decidere di aggiornare solo nel caso in cui quest’ultima sia più recente della prima controllata. Per questo motivo ho deciso di ricontrollare lo script, migliorarlo laddove fosse possibile e inserire il nuovo controllo a monte per abbandonare il batch nel caso in cui questo risulti “inutile“. Vediamo nello specifico le modifiche …

Il codice iniziale era stato pubblicato qui:

dev.gxware.org/?15

contrariamente al nuovo pubblicato invece su:

dev.gxware.org/?17

Il controllo che si occupa di confrontare la versione del server e -di conseguenza- decidere il da farsi è il seguente:

fc %programfiles%\UltraVNC\winvnc.exe \\NOME_FILESERVER\Install\Workstation\uvnc_silent\1060_pre\winvnc.exe > nul
IF ERRORLEVEL 1 goto STOPSERVIZI

fc” è un comando riconosciuto da DOS, la documentazione è disponibile a questo indirizzo:

computerhope.com/fchlp.htm

Permette di confrontare due file (qualsiasi) permettendomi così di capire se la versione del server è pari a quella della macchina locale e reagendo -di conseguenza- diversamente a seconda della risposta ottenuta. Il “goto STOPSERVIZI” viene infatti richiamato solo ed esclusivamente se il risultato del confronto dice che le versioni differiscono tra di loro.

L’altra modifica è presto detta / fatta, si tratta dell’installazione full di una versione 1.0.5.6 riconosciuta come stable dagli sviluppatori del tool di controllo remoto, alla quale verranno poi modificate “a cuore aperto” le versioni di server e client portandole sul ramo “pre” della prossima 1.0.6.0:

:INSTALL
echo.
echo *** Installazione nuova versione UltraVNC ***
echo.
if not exist %programfiles%\UltraVNC mkdir %programfiles%\UltraVNC\
copy \\NOME_FILESERVER\Install\Workstation\uvnc_silent\ultravnc.ini "%programfiles%\UltraVNC"
"\\NOME_FILESERVER\Install\Workstation\uvnc_silent\UltraVNC_1.0.5.6_Setup.exe" /verysilent /loadinf=\\NOME_FILESERVER\Install\Workstation\uvnc_silent\ultravnc.inf

echo.
echo *** Sovrascrittura con file pre-release 1060 ***
echo.
cd %programfiles%\UltraVNC
move winvnc.exe winvnc.exe.bak
move vncviewer.exe vncviewer.exe.bak
copy \\NOME_FILESERVER\Install\Workstation\uvnc_silent\1060_pre\winvnc.exe %programfiles%\UltraVNC\
copy \\NOME_FILESERVER\Install\Workstation\uvnc_silent\1060_pre\vncviewer.exe %programfiles%\UltraVNC\
cd \
cd %programfiles%\UltraVNC
start winvnc.exe
goto FINE

Chiaramente lo script verrà eseguito -ancora una volta- come amministratore di dominio, così che l’utente non debba “metterci mouse” durante il processo. Il file di configurazione gli verrà passato proprio come prima (in caso di nuova installazione o disinstallazione e passaggio a nuova versione) e ad installazione terminata sarà immediatamente possibile utilizzare il prodotto.

Stavolta non ho rilasciato il pacchetto completo e pronto da utilizzare, potete modificare il vecchio batch incollando il codice rilasciato in /dev e scaricare i file della 1.0.6.0 da questa discussione sul forum di UVNC.

Non mi resta che augurarvi buon lavoro :)

ancora una volta grazie a $cliente (lui sa chi) per avermi fatto divertire nella ricerca e nello sviluppo di soluzioni a lui adatte :)