giovedì 11 ottobre 2012

Utilizzare una stampante incompatibile con linux su linux

Mi sono imbattuto per necessità in questo problema e grazie a varie ricerche su internet, guide e lavoro manuale di programmazione, sono riuscito a risolvere il problema. Come sempre lo rendo disponibile a chi ne avesse bisogno oltre che per comodità personale.
Nel mio caso ho utilizzato una distribuzione Debian wheezy, ma sicuramente è adattabile a tante altre.
Per prima cosa elenco l'occorrente hardware:
- un pc con linux
- un pc con windows (o come ho fatto io, una macchina virtuale)
- una stampante qualsiasi

Per quanto riguarda il software su windows:
- Ghostscript http://www.ghostscript.com/download/gsdnld.html
- GSview (io ho usato la 4.9) http://pages.cs.wisc.edu/~ghost/gsview/index.htm
- Python (io ho usato la 2.7.3) http://www.python.org/download/
- Python Win32 Extensions (pywin32) http://sourceforge.net/projects/pywin32/files/pywin32/
- script dirwatch.py (modificato da me) https://docs.google.com/open?id=0B1AvO3-cFzRKbGxqOF9laGlpbFk

Software su linux:
- CUPS installato e funzionante correttamente
- SAMBA client (smbclient) installato e funzionante correttamente
- Adobe distiller PPD http://www.adobe.com/support/downloads/detail.jsp?hexID=273e
- script winp http://justin.yackoski.name/winp/winp (o se non funziona il link https://docs.google.com/open?id=0B1AvO3-cFzRKNlRrUDYyYTZ0aEk)

Procedimento:
Facciamo con virtualbox una nuova macchina virtuale ed installiamo windows (io ho utilizzato xp), diamo come nome al pc "windows-print". Alla fine del procedimento dovremmo avere una macchina virtuale con xp perfettamente funzionante compreso l'accesso alle porte usb. Se ricevete errori riguardo l'accesso alle porte usb, probabilmente dovrete aggiungere il vostro utente al gruppo vboxuser in questo modo, sostituendo il vostro nome utente al posto di username:

usermod -a -G vboxusers username

Fatto ciò, possiamo installare i driver della stampante all'interno della macchina virtuale e collegarla cliccando sulla spunta che trovate nelle impostazioni della macchina virtuale. Se non la è già, rendete la stampante predefinita. Provate a lanciare una stampa da windows e se funziona andiamo oltre, altrimenti rivedete l'installazione della stampante e cercate il problema.
Create l'account "print" con password "print" (io l'ho reso amministratore, non ho provato se funziona anche come account limitato) e fate in modo di far avviare windows con l'accesso automatico all'utenza "print", senza richiesta della password.
Per fare ciò, eseguiamo "control userpasswords2", togliamo la spunta da "Per utilizzare questo computer è necessario che l'utente immetta il nome e la password", clicchiamo su applica e digitiamo il nome utente "print" e la password "print" nella finestra che appare.

Iniziamo con le installazioni software su windows... Installiamo Ghostscript e GSview e verifichiamo che funzioni. Installiamo Python e le win32 extensions verificando che a fine installazione non ci siano errori. A me è successo che le win32 extensions mi dessero un errore alla fine dell'installazione, ho disinstallato, riavviato e installato nuovamente ed è andato a posto (non ho capito il motivo, ma scrivo ciò che mi è successo direttamente).
Creiamo le directory C:\script e C:\temp\spool e condividete quest'ultima. I nomi delle directory possono essere cambiati, ma in quel caso dovrete modificare il programmino python che metterete all'interno di C:\script per far in modo che controlli un'altro percorso. Mettete il file dirwatch.py in C:\script e creiamo un collegamento in esecuzione automatica per l'utente "print".
Il programma dirwatch.py non fa altro che controllare in continuo C:\temp\spool per intercettare modifiche ai file e quando si "accorge" che un file è stato rinominato lancia il programma gsview con alcune opzioni per effettuare la stampa sulla stampante locale predefinita.
Su windows dovremmo aver finito, riavviamo e verifichiamo che in automatico entra nell'utenza print e si apra un terminale con il programma dirwatch.py in ascolto. Se così non fosse ripercorriamo i passi e cerchiamo l'errore prima di procedere oltre.

Passiamo a linux...
Facciamo un test di connessione di rete con la macchina virtuale:

smbclient //windows-print/spool -U print

Se non funziona trovate il problema (magari avete qualche configurazione di smb.conf da sistemare o il firewall di windows attivo) e solo quando riuscirete ad accede alla directory remota potrete continuare. Provate a fare una copia di un file all'interno della directory remota per una seconda verifica di funzionamento, se non avete problemi di permessi o altro potete continuare.
Successivamente dobbiamo estrarre il file ADIST5.PPD da adobe.zip e rinominarlo con caratteri piccoli in adist5.ppd. Spostiamo questo file in /usr/share/cups/model/
Spostiamo lo script "winp" in /usr/lib/cups/backend/ diamogli i permessi di esecuzione e cambiamo il grupp con:

chmod -x /usr/lib/cups/backend/winp
chgrp lp /var/spool/winp

Creiamo la directory /var/spool/winp e cambiamo i permessi con:

mkdir /var/spool/winp
chmod g+w /var/spool/winp

Riavviamo CUPS con:

service cups restart

Siamo quasi alla fine.. Configuriamo una nuova stampante che utilizzerà come ppd il file adist5.ppd copiato in precedenza:

lpadmin -p windows_printer -E -v winp://windows_pc/spool -m adist5.ppd

Ora dovrebbe essere tutto ok e lanciando una stampa da linux verrà creato un file in /var/spool/winp, traferito in //windows-print/spool, rinominato e a quel punto stampato tramite il software dirwatch.py... Per qualsiasi problema da linux è possibile vedere i log che trovate in /var/log/cups/ e /tmp/winp.log

Fonte: http://justin.yackoski.name/winp/

lunedì 1 ottobre 2012

Linux e open source nella P.A.


Finalmente anche l'Italia si sta muovendo nella direzione giusta e lo scorso agosto è diventato legge... Sto parlando di Linux e l'open source in genere nella pubblica amministrazione. E' una notizia strepitosa non solo perchè sono un fan di Linux e mi piacerebbe vederlo in ogni computer, soprattutto perchè i soldi spesi per l'informatica ovviamente arrivano dalle nostre tasche, quindi più risparmiano e meglio è!
Poi c'è la questione filosofica che non è da poco. Vogliamo combattere la pirateria, ma quando scarichiamo un file di pubblico dominio richiede office oppure internet explorer... Insomma il file è pubblico ma per visionarlo dovrei spendere soldi! Mi sembra un pò un controsenso. Ci vorranno anni per effettuare il passaggio, ma almeno si vede un inizio!

L'articolo 68 del Codice dell'Amministrazione Digitale (D.Lgs. 82/2005) offre le linee guida per le procedure di acquisizione del software da parte della Pubblica amministrazione. Queste le novità introdotte nel primo comma:

1. Le pubbliche amministrazioni acquisiscono programmi informatici o parti di essi a seguito di una valutazione comparativa di tipo tecnico ed economico tra le seguenti soluzioni disponibili sul mercato:
a) software sviluppato per conto della pubblica amministrazione;
b) riutilizzo di software o parti di esso sviluppati per conto della pubblica amministrazione;
c) software libero o a codice sorgente aperto;
d) software combinazione delle precedenti soluzioni.

La normativa parla chiaro: se in precedenza non vi erano criteri di priorità fra le soluzioni da scegliere, adesso la precedenza è data al software open source, a meno che questo, per un preciso motivo da dimostrare, non sia adatto allo scopo oppure di livello avanzato nell’utilizzo dello stesso.  Quindi ampio spazio all'open source.

Quindi tanti auguri a Linux e all'open source anche in Italia!