User Tools

Site Tools


doc:appunti:linux:tux:cups

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:appunti:linux:tux:cups [2012/12/12 14:38] – [Breviario da riga di comando] niccolodoc:appunti:linux:tux:cups [2023/05/16 09:59] (current) – [AuthInfoRequired negotiate] niccolo
Line 5: Line 5:
 Conviene isntallare i seguenti pacchetti Debian (Etch) per avere la scelta tra tanti modelli di stampanti quando si configura una coda di stampa CUPS: Conviene isntallare i seguenti pacchetti Debian (Etch) per avere la scelta tra tanti modelli di stampanti quando si configura una coda di stampa CUPS:
  
-  * cupsys-driver-gutenprint +  * **cupsys-driver-gutenprint** 
-  * linuxprinting.org-ppds +  * **linuxprinting.org-ppds** 
-  * foomatic-filters-ppds +  * **foomatic-filters-ppds** 
-  * hplip-ppds +  * **hplip-ppds** 
 +  * **cups-pdf** per stampare file PDF 
 +  * **smbclient** per stampare su code di stampa Windows 
 +  * **cups-bsd** comandi compatibili sistema di stampa BSD (lpq, lprm, lpr, lpc).
 ===== Integrazione con KDE ===== ===== Integrazione con KDE =====
  
Line 24: Line 26:
 CUPS supporta diversi tipi di stampanti: parallele, seriali, USB, ... Per ogni dispositivo esiste l'opportuno backend. Fare attenzione che nelle ultime versioni del pacchetto Debian alcuni backend potrebbero essere disabilitati per prevenire problemi di compatibilità. Se ad esempio durante l'installazione di una nuova stampante, la pagina web non mostra tra i device disponibili la ''**USB Printer #1**'', verificare che il file ''**/usr/lib/cups/backend/usb**'' sia eseguibile. In caso contrario eseguire ''**dpkg-reconfigure cupsys**''. CUPS supporta diversi tipi di stampanti: parallele, seriali, USB, ... Per ogni dispositivo esiste l'opportuno backend. Fare attenzione che nelle ultime versioni del pacchetto Debian alcuni backend potrebbero essere disabilitati per prevenire problemi di compatibilità. Se ad esempio durante l'installazione di una nuova stampante, la pagina web non mostra tra i device disponibili la ''**USB Printer #1**'', verificare che il file ''**/usr/lib/cups/backend/usb**'' sia eseguibile. In caso contrario eseguire ''**dpkg-reconfigure cupsys**''.
  
 +In generale conviene installare i seguenti pacchetti Debian:
 +
 +  * **cups-pdf** per stampare su file .pdf
 +  * **smbclient** per stampare su code di stampa Windows
 ===== Stringa di connessione ===== ===== Stringa di connessione =====
  
Line 38: Line 44:
  
 ===== Breviario da riga di comando ===== ===== Breviario da riga di comando =====
 +
 +Per inviare un file alla stampante:
 +
 +<code>
 +lp -d STA02 /etc/passwd
 +</code>
  
 Per vedere tutte le code di stampa: Per vedere tutte le code di stampa:
Line 45: Line 57:
 </code> </code>
  
-Per vedere lo stato di una stampante (in attesa, disabilitata, ecc.):+Per vedere lo stato di una stampante (ad esempio di nome **STA07**), che può essere in attesa, disabilitata, ecc.:
  
 <code> <code>
Line 68: Line 80:
 cancel STA07-7 cancel STA07-7
 </code> </code>
 +
 +Per cancellare tutti i job in coda si può usare questo trucco:
 +
 +<code>
 +cupsdisable -c STA07
 +cupsenable STA07
 +</code>
 +
 +È possibile controllare le code di stampa CUPS anche **da host remoto**, la comunicazione avviene tramite TCP/IP su porta 631. Ecco ad esempio come utilizzare **cupsenable**:
 +
 +<code>
 +cupsenable -U remoteuser -h 192.168.102.200 printer_name
 +</code>
 +
 +L'utente //**remoteuser**// deve esistere sul server CUPS come utente Unix e deve avere i permessi necessari. In generale la configurazione Debian prevede che gli appartenenti al gruppo //**lpadmin**// hanno pieno controllo su CUPS. La password può essere fornita al comando tramite //stdin//. Non è necessario che l'utente abbia una shell valida per eseguire il comando.
 +===== Accesso a CUPS da rete locale =====
 +
 +Anzitutto il demone deve stare in ascolto sulle interfacce di rete, ecco alcuni esempi:
 +
 +<file>
 +# Accetta connessioni solo da 127.0.0.1
 +#Listen localhost:631
 +
 +# Accetta connessioni su due interfacce di rete.
 +Listen 172.16.3.53:631
 +Listen 192.168.3.1:631
 +
 +# Accetta connessioni da tutte le interfacce.
 +#Listen *:631
 +</file>
 +
 +Poi si devono impostare le opportune access list. La parola chiave **@LOCAL** indica che l'accesso è consentito agli host che sono locali (stessa network IP), con la sintassi **@IF(name)** si identificano gli host locali, ma relativi ad una sola interfaccia di rete (attenzione alle interfacce punto-punto, che non hanno una network!).
 +
 +<file>
 +<Location />
 +  Allow from @LOCAL
 +  Allow from @IF(tun53)
 +  Allow from 172.16.53.*
 +  Order allow,deny
 +</Location>
 +</file>
 +
 +<file>
 +<Location /admin>
 +  Allow from @LOCAL
 +  Allow from @IF(tun53)
 +  Allow from 172.16.53.*
 +  Order allow,deny
 +</Location>
 +</file>
 +
 +<file>
 +<Location /admin/conf>
 +  Allow from @LOCAL
 +  Allow from @IF(tun53)
 +  Allow from 172.16.53.*
 +  Order allow,deny
 +</Location>
 +</file>
 +
 +===== Stampa CUPS su coda Windows =====
 +
 +Per configuraer una coda di stampa CUPS verso host Windows e protocollo SMB è sufficiente impostare l'URL della stampante a qualcosa del genere.
 +
 +<code>
 +smb://user:password@HOSTNAME/Printer
 +</code>
 +
 +In questo caso CUPS usa il backend **smbspool** che può essere anche invocato direttamente per un test:
 +
 +<code>
 +DEVICE_URI="smb://user%password@HOSTNAME/Printer" smbspool 1234 user print_test 1 prova_stampa
 +</code>
 +
 +Sembra che con //smbspool// sia impossibile utilizzare un protocollo diverso da quello predefinito; purtroppo in alcune circostanze è necessario utilizzare il protocollo **SMB2**, ad esempio per accedere ad alcune versioni di **Windows 10**.
 +
 +Una strada è utilizzare come backend il programma **smbclient** al posto di //smbspool//. A questo **[[http://willem.engen.nl/projects/cupssmb/smbc|link]]** si può scaricare uno script da copiare in **/usr/lib/cups/backend/smbc**, quindi in **/etc/cups/printers.conf** si indica l'URL della stampante in questo modo:
 +
 +<code>
 +smbc://HOSTNAME/Printer
 +</code>
 +
 +Lo script di esempio gestisce l'autenticazione utilizzando l'opzione **%%-A%%** di smbclient (file esterno). Per coerenza con il backend CUPS sarebbe meglio poter estrarre le credenziali dall'URL della stampante, usando il formato:
 +
 +<code>
 +smbc://user%password@hostname/printer
 +</code>
 +
 +Qui è disponibile una versione modificata dello script **{{..:smbc-cups-smbclient-backend.gz|CUPS smbclient backend}}** che fa questo servizio.
 +
 +===== AuthInfoRequired negotiate =====
 +
 +Se nel file **/etc/cups/printers.conf** viene definita una coda di stampa smb **senza autenticazione**:
 +
 +<file>
 +DeviceURI smb://192.168.0.193/hp1320
 +</file>
 +
 +il server di stampa CUPS (almeno nella versione **2.2.7-1ubuntu2.7** di Ubuntu Bionic 18.04 ) cerca di negoziare una autenticazione con login e password:
 +
 +<code>
 +# lp -d HP-1320 file.txt
 +Password for root on localhost?  
 +lp: Unauthorized
 +</code>
 +
 +Il demone **cupsd** aggiunge automaticamente la seguente riga alla definizione della stampante in **/etc/cups/printers.conf** (il file viene riscritto quando il demone viene fermato):
 +
 +<file>
 +AuthInfoRequired negotiate
 +</file>
 +
 +Si potrebbe pensare di modificare tale riga in questo modo:
 +
 +<file>
 +AuthInfoRequired none
 +</file>
 +
 +ma **funziona una sola volta**: la prima richiesta di stampa avviene senza autenticazione, ogni tentativo successivo chiede nuovamente l'autenticazione e il file printers.conf viene sovrascritto.
 +
 +L'unico modo per disabilitare la richiesta di password è eliminare l'opzione **AuthInfoRequired** dalla definizione della stampante e indicare un nome utente nell'URL di connessione:
 +
 +<file>
 +DeviceURI smb://guest@192.168.0.193/hp1320
 +</file>
 +
 +Ovviamente l'utente **guest** deve essere abilitato sul server smb senza password. L'eventuale password va indicata dopo il nome utente separato dai due punti:
 +
 +<file>
 +DeviceURI smb://guest:password@192.168.0.193/hp1320
 +</file>
 +
 +===== Set Default Options =====
 +
 +Quando si cambiano le impostazioni predefinite di una stampante dall'interfaccia di amministrazione di CUPS, le impostazioni vengono salvate nel file .ppd della stampante stessa. Ad esempio quando si imposta il formato carta A4 queste sono le impostazioni modificate nel file **/etc/cups/ppd/hpcm1312.ppd**:
 +
 +<file>
 +*DefaultPageSize: A4
 +*DefaultPageRegion: A4
 +*DefaultImageableArea: A4
 +*DefaultPaperDimension: A4
 +</file>
 +
  
doc/appunti/linux/tux/cups.1355323131.txt.gz · Last modified: 2012/12/12 14:38 by niccolo