256 lines
8.4 KiB
Markdown
256 lines
8.4 KiB
Markdown
---
|
|
categories: print
|
|
title: Howto CUPS
|
|
...
|
|
|
|
* Documentation : <http://cups.org/documentation.php>
|
|
|
|
[CUPS](http://cups.org/) signifie **Common Unix Printing System**, c'est un serveur d'impression pour Linux/Unix. Il est souvent utilisé sur des postes de travail sous Linux, mais aussi sur des serveurs pour centraliser l'accès aux imprimantes et permettre des droits d'accès, des quotas, etc.
|
|
|
|
## Installation
|
|
|
|
~~~
|
|
# apt install cups smbclient ttf-liberation ttf-mscorefonts-installer
|
|
|
|
# systemctl status cups
|
|
● cups.service - CUPS Scheduler
|
|
Loaded: loaded (/lib/systemd/system/cups.service; enabled; vendor preset: enabled)
|
|
Docs: man:cupsd(8)
|
|
Main PID: 26996 (cupsd)
|
|
Tasks: 1 (limit: 4915)
|
|
Memory: 3.1M
|
|
CPU: 197ms
|
|
CGroup: /system.slice/cups.service
|
|
└─26996 /usr/sbin/cupsd -l
|
|
~~~
|
|
|
|
|
|
## Utilisation basique
|
|
|
|
Lister les imprimantes :
|
|
|
|
~~~
|
|
# lpstat -t
|
|
scheduler is running
|
|
system default destination: HP_Color_LaserJet_CP2025dn
|
|
device for HP_Color_LaserJet_CP2025dn: socket://192.168.4.56
|
|
HP_Color_LaserJet_CP2025dn accepting requests since mer. 13 juin 2018 21:21:54 CEST
|
|
printer HP_Color_LaserJet_CP2025dn is idle. enabled since mer. 13 juin 2018 21:21:54 CEST
|
|
~~~
|
|
|
|
Impression en ligne de commande :
|
|
|
|
~~~
|
|
$ export PRINTER=HP_Color_LaserJet_CP2025dn
|
|
$ echo test | lp
|
|
request id is HP_Color_LaserJet_CP2025dn-3 (0 file(s))
|
|
$ lp foo.ps
|
|
request id is HP_Color_LaserJet_CP2025dn-4 (1 file(s))
|
|
~~~
|
|
|
|
|
|
## Configuration
|
|
|
|
Fichiers de configuration :
|
|
|
|
~~~
|
|
/etc/cups/
|
|
├── cupsd.conf
|
|
├── cupsd.conf.pre16-bak
|
|
├── cups-files.conf
|
|
├── interfaces
|
|
├── ppd
|
|
├── raw.convs
|
|
├── raw.types
|
|
├── snmp.conf
|
|
└── ssl
|
|
├── server.crt -> /etc/ssl/certs/ssl-cert-snakeoil.pem
|
|
└── server.key -> /etc/ssl/private/ssl-cert-snakeoil.key
|
|
~~~
|
|
|
|
La configuration principale se trouve dans le fichier `/etc/cups/cupsd.conf`.
|
|
|
|
On peut tester la configuration avec la commande :
|
|
|
|
~~~
|
|
# cupsd -t
|
|
"/etc/cups/cups-files.conf" is OK.
|
|
"/etc/cups/cupsd.conf" is OK.
|
|
~~~
|
|
|
|
|
|
## Administration
|
|
|
|
CUPS a une interface web d'administration accessible sur le port TCP/631 : <http://127.0.0.1:631>
|
|
|
|
Cette interface permet de gérer les imprimantes (génération du fichier `/etc/cups/printers.conf`),
|
|
visualiser des informations (logs, jobs…) et agir sur les jobs d'impression (annulation, etc.)
|
|
|
|
### Droits d'accès à l'interface web
|
|
|
|
Par défaut, l'interface est restreinte sur _localhost_
|
|
|
|
Pour autoriser son accès depuis des machines distantes, il faut ajuster les directives suivantes dans `/etc/cups/cupsd.conf` :
|
|
|
|
~~~
|
|
Listen *:631
|
|
|
|
<Location />
|
|
Order allow,deny
|
|
Allow from 192.0.32.0/24
|
|
</Location>
|
|
|
|
~~~
|
|
|
|
Il faut ensuite ajouter `Allow from 192.0.32.0/24` pour les sections et actions souhaitées.
|
|
|
|
Pour les sections et actions critiques, une authentification supplémentaire est nécessaire.
|
|
Cela se base sur les utilisateurs Unix, pour autoriser un utilisateur on l'ajoutera dans le groupe `lpadmin` :
|
|
|
|
~~~
|
|
# adduser jdoe lpadmin
|
|
~~~
|
|
|
|
### Fichiers PPD (PostScript Printer Description)
|
|
|
|
Les fichiers PPD décrivent les fonctionnalités de l'imprimante. Suivant les paquets installés, un certain nombre de modèles
|
|
d'imprimantes sera disponible sur le système. On pourra aussi en ajouter dans le répertoire `/usr/local/share/ppd/`.
|
|
Mais également lors de l'ajout d'une imprimante, on pourra tout simplement en uploader ; les fichiers PPD uploadés
|
|
se trouvent dans le répertoire `/etc/cups/ppd/`.
|
|
|
|
|
|
## Gestion des imprimantes
|
|
|
|
CUPS gère plusieurs backends d'impression : _ipp://_, _socket://_, _smb://_ etc.
|
|
|
|
### Ajout d'une imprimante
|
|
|
|
Le plus simple est d'ajouter une imprimante via l'interface : "Adding Printers and Classes" et "Add Printer".
|
|
Il faudra principalement choisir le backend et le fichier PPD.
|
|
|
|
Cela va générer une entrée dans le fichier `/etc/cups/printers.conf`, exemple :
|
|
|
|
~~~
|
|
# Printer configuration file for CUPS v2.2.1
|
|
# Written by cupsd
|
|
# DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
|
|
<Printer HP_Color_LaserJet_CP2025dn>
|
|
UUID urn:uuid:642ee499-755a-3e0b-4774-b97b2b535bc8
|
|
Info HP Color LaserJet CP2025dn
|
|
Location
|
|
MakeModel HP Color LaserJet 2550 Series
|
|
DeviceURI socket://192.0.32.56
|
|
State Idle
|
|
StateTime 1528918429
|
|
ConfigTime 1528917550
|
|
Type 8425548
|
|
Accepting Yes
|
|
Shared No
|
|
JobSheets none none
|
|
QuotaPeriod 0
|
|
PageLimit 0
|
|
KLimit 0
|
|
OpPolicy default
|
|
ErrorPolicy retry-job
|
|
Attribute marker-colors \#000000,#00FFFF,#FF00FF,#FFFF00
|
|
Attribute marker-levels 53,97,37,87
|
|
Attribute marker-names Black Cartridge HP CC530A,Cyan Cartridge HP CC531A,Magenta Cartridge HP CC533A,Yellow Cartridge HP CC532A
|
|
Attribute marker-types toner,toner,toner,toner
|
|
Attribute marker-change-time 1528918429
|
|
</Printer>
|
|
~~~
|
|
|
|
### Imprimantes HP
|
|
|
|
La plupart du temps, les imprimantes HP utilisent le protocole _JetDirect_ pour lequel on peut utiliser le backend _socket://_
|
|
|
|
On peut installer des drivers supplémentaires via :
|
|
|
|
~~~
|
|
# apt install hpijs hpijs-ppds hplip hplip-data
|
|
~~~
|
|
|
|
### Imprimantes CANON
|
|
|
|
Les fichiers PPD peuvent être souvent trouvés sur <http://software.canon-europe.com/index.asp>
|
|
|
|
Et il est parfois nécessaire d'ajouter le binaire _sicgsfilter_ téléchargeable en 32 bits
|
|
sur <http://fr.software.canon-europe.com/software/0040160.asp> ou en 64 bits sur
|
|
<http://fr.software.canon-europe.com/software/0040165.asp>
|
|
|
|
On le placera dans `/usr/local/bin/` et on évitera ainsi une erreur "/usr/lib/cups/filter/foomatic-rip failed" :
|
|
|
|
~~~
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] renderer command: /bin/cat - | sicgsfilter -MPS -NP -A1 -uanonymous -V"Test Page" -n1
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496]
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Closing renderer
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] JCL: <job data>
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496]
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] sh: sicgsfilter: command not found
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] /bin/cat: write error: Broken pipe
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] renderer return value: 127
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] renderer received signal: 127
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] tail process done writing data to STDOUT
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] KID4 finished
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Process dying with "The renderer command line returned an unrecognized error code 127.", exit stat: 1
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] error: Illegal seek (29)
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] The renderer command line returned an unrecognized error code 127.
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] KID3 exited with status 1
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Renderer exit stat: 1
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Renderer process finished
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Killing process 5546 (KID3)
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Process dying with "Error closing renderer", exit stat: 1
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] error: Illegal seek (29)
|
|
D [02/Jun/2011:23:23:13 +0200] [Job 14496] Error closing renderer
|
|
E [02/Jun/2011:23:23:13 +0200] PID 5541 (/usr/lib/cups/filter/foomatic-rip) stopped with status 1!
|
|
~~~
|
|
|
|
### Imprimantes partagées par Windows
|
|
|
|
Pour accéder à des imprimantes partagées par Windows, il faut installer le paquet `smbclient` qui contient notamment le binaire `smbpool` pour activer le backend _smb://_ :
|
|
|
|
~~~
|
|
# apt install smbclient
|
|
~~~
|
|
|
|
On peut ensuite utiliser ce genre d'entrées dans `/etc/cups/printers.conf` :
|
|
|
|
~~~
|
|
DeviceURI smb://DOMAIN\user:PASSWORD@192.0.32.57/HPLaserJet
|
|
DeviceURI smb://192.0.32.58/printer
|
|
~~~
|
|
|
|
## Logs
|
|
|
|
Par défaut, les logs d'accès se trouvent dans `/var/log/cups/access_log`
|
|
et les logs d'erreurs dans `/var/log/cups/error_log`.
|
|
|
|
### Mode debug
|
|
|
|
Pour avoir un mode debug, on placera dans le fichier `/etc/cups/cupsd.conf` :
|
|
|
|
~~~
|
|
LogLevel debug
|
|
~~~
|
|
|
|
puis, après avoir reloadé le démon CUPS, on aura un maximum d'informations dans `/var/log/cups/error_log`.
|
|
|
|
|
|
## FAQ
|
|
|
|
### Détection automatique d'imprimantes partagées
|
|
|
|
Par défaut CUPS tente de découvrir les imprimantes partagées par d'autres systèmes sur le réseau, et les affiche dans sa liste, avec une URI=/dev/null. Pour ne pas avoir ce comportement, décocher la case « Afficher les imprimantes partagées par d'autres systèmes » dans « Administration du serveur » dans l'interface d'admin, puis supprimer le cache :
|
|
|
|
~~~
|
|
# /etc/init.d/cups stop && rm /var/cache/cups/remote.cache && /etc/init.d/cups start
|
|
~~~
|
|
|
|
### Imprimer une page de test en CLI
|
|
|
|
Imprimer la page de test de CUPS avec lp, avec le nom de l'imprimante _foo_ :
|
|
|
|
~~~
|
|
$ lp -d foo /usr/share/cups/data/testprint
|
|
~~~
|