Installare una stampante da Windows in modo che:
tutti i client windows possano caricare i driver trovandoli sul server,e quindi senza chiederli all’utente
sia possibile aggiungere la stampante dall’interno della script di logon via due differenti direttive, a seconda di quello che si vuole ottenere:
UserPrinter: | la stampante verrà resa disponibile nel profilo utente e quindi su tutte le macchine. Questa è la procedura più immediata per stampanti che debbano essere disponibili per tutti. |
---|---|
PcPrinter: | la stampante verrà resa disponibile su ogni macchina dopo che l ammministratore si sia loggato una volta. Questa procedura è più indicata per una stampante che debba essere disponibile a tutti ma solo in alcuni contesti: ad esempio una stampante di un singolo laboratorio |
L’obiettivo viene raggiunto in alcuni step separati:
Il setup usato comprende un server e due client XP o Win2000. Con VirtualBox non è difficie fare in modo che il client Windows sia sulla stessa scheda di rete tap creata da netkit.
Il primo passo è di create una stampante per il sistema cups. La cosa può avvenire via riga di comando o tramite l’interfaccia web o ancora tramite l’ammistrazione di Ubuntu.
Nota
Per alcune stampanti è importante utilizzare il filtro RAW in quanto il driver usato sarà quello dei client windows.
Per far vedere a samba le nuove stampanti aggiunte lanciamo
/etc/init.d/samba force-reload
Potremo verificare che samba veda le nostra stampanti con
smbclient -g -N -L 127.0.0.1|grep -E '^Printer'
Domain=[CUPS-DOMAIN] OS=[Unix] Server=[Samba 3.2.5]
Domain=[CUPS-DOMAIN] OS=[Unix] Server=[Samba 3.2.5]
Printer|hp1320n_raw|Hp Laserjet 1320n RAW
Configuriamo /etc/samba/smb.conf
[global]
...
printing = cups
printcap name = cups
load printers = yes
browseable = yes
...
[printers]
comment = All Printers
path = /var/spool/samba
guest ok = Yes
printable = Yes
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
read only = Yes
write list = @"Domain Admins", root, administrator
guest ok = Yes
...
printers: | questa direttiva rende disponibili le stampanti come share del dominio |
---|---|
load printers: | impostato a yes fa sì che samba chieda l’elenco delle stampanti direttamente a cupsd. Le stampanti aggiunte in automatico erediteranno la configurazione dalla share “printers”. |
print$: | questa share contiene i driver che possono essere richiesti dai client. E` esattamente questa la parte che permette di evitare di dovere fornire i driver ai client. |
Forziamo quindi samba a rileggere la propria configurazione
/etc/init.d/samba force-reload
Assicuriamoci in ultimo che la directory che ospiterà i nostri driver contenga le architetture da noi supportate:
/var/lib/samba/printers/
|-- IA64
|-- W32ALPHA
|-- W32MIPS
|-- W32PPC
|-- W32X86
|-- WIN40
`-- x64
e che ad administrator sia consentito scriverci
setfacl -R -m u:administrator:rwx /var/lib/samba/printers
setfacl -R -m d:u:administrator:rwx /var/lib/samba/printers
l’installazione da Windows dei driver verrà fatta in modo speciale. Partendo dal browsing delle risorse di rete -> server si vedranno
E` importante non cliccare le stampanti direttamente visibili, ma le stesse dentro nella schermata raggiungibile tramite l’icone “stampanti e fax” come mostrato dalla figura.
E` anche importante non installare direttamente i driver, quindi si risponderà “NO”.
Si proceda quindi con l’installazione (è possibile vedere tutte le manovre Installazione driver passo passo).
E` importante che si proceda con un ultimo passo: la configurazione della stampante. Questo passo è raccomandato anche se non vi interessa nessun parametro differente dallo standard, perché fa in modo che tutti i parametri vengano scritti correttamente. Il modo consigiato è di passare dalla pagina vrticale a quella orizzontale e poi nuovamente alla verticale.
Anche di questa parte nella pagina indicata sopra ci sono i dettagli.
Ora i drivers sono stati caricati nel server:
/var/lib/samba/printers/
|-- COLOR
| `-- HPCLJ.ICM
|-- IA64
|-- W32ALPHA
|-- W32MIPS
|-- W32PPC
|-- W32X86
| `-- 3
| |-- HP__CLJ1.PPD
| |-- PS5UI.DLL
| |-- PSCRIPT.HLP
| |-- PSCRIPT.NTF
| `-- PSCRIPT5.DLL
|-- WIN40
`-- x64
E` possibile verificare l’aggiunta dei driver lato server con “rpcclient”.
Verifico sul server che i driver siano stati aggiunti
srv-cups:~# rpcclient -U'administrator%isi' -c 'enumdrivers 2' 127.0.0.1 -d0
[Windows NT x86]
Printer Driver Info 2:
Version: [3]
Driver Name: [hp LaserJet 1320 PCL 5e]
Architecture: [Windows NT x86]
Driver Path: [\\127.0.0.1\print$\W32X86\3\unidrv.dll]
Datafile: [\\127.0.0.1\print$\W32X86\3\HPC13205.GPD]
Configfile: [\\127.0.0.1\print$\W32X86\3\hpmdp5r1.dll]
Il parametro enumdrivers determina la quantità di informazioni mostrate, si provi ad esempio a mettere 3 come argomento.
Ovviamente se lo provate su una macchina differente da quella del laboratorio netkit, la password di amministratore sarà differente.
A questo punto possiamo andare nella sezione web sulle stampanti per impostare l’installazione della stampante al mometo del logon. Come detto in precedenza, questo può avvenire per utente o per pc. La sezione che ci interessa è “Logon” -> “shares”.
Cliccando sulla aggiunta di stampanti avremo nei due casi la possibilità di aggiungere le stampanti da un menu, vedremo solo le stampanti per cui è stato aggiunto il driver.
Da questo momento ogni utente vedrà direttamente le stampanti utente mentre è necessario che ‘administrator’ faccia login sui ogni macchina perché sia visibile la stampante di tipo ‘pc’.
Questo secondo tipo di stampante è più opportuna per stamanti connesse ad un luogo (un laboratorio, la biblioteca...).