Ceci est une ancienne révision du document !
Table des matières
Version : 2023.01
Dernière mise-à-jour : 2023/08/24 10:51
LDF509 - Gestion des Impressions
Contenu du Module
- LDF509 - Gestion des Impressions
- Contenu du Module
- Présentation de Cups
- Protocoles
- Paquets
- Daemon
- Le fichier /etc/cups/cupsd.conf
- Filtres
- Backends
- Journaux
- Imprimantes
- LAB #1 - Administration de Cups
- 1.1 - La Commande lpstat
- 1.2 - La Commande lpadmin
- 1.3 - Les Commandes cupsaccept et cupsenable
- 1.4 - Classe d'imprimantes
- 1.5 - Le fichier /etc/cups/printers.conf
- 1.6 - Le fichier /etc/cups/classes.conf
- 1.7 - La Commande cancel
- 1.8 - La Commande lpmove
- 1.9 - L'interface Web
Présentation de Cups
Le logiciel Common Unix Printing System est un système de gestion des impressions conçu pour Unix.
Protocoles
Cups utilise le protocole IPP sur les ports udp/631 et tcp/631.
Ce protocole :
- est une extension du protocole HTTP
- permet d'administrer CUPS via un navigateur web
- permet de décrire les spools d'impression par simple URL
Cups peut aussi utiliser les deux protocoles suivants :
- tcp/515 - Protocole BSD
- tcp/9100 - Protocole JeTDirect pour les imprimantes réseau HP
Daemon
cupsd est le daemon principal du système CUPS. Quand cupsd traite une impression, il transmet les données à un filtre en fonction du modèle d'imprimante. Après traitement par le filtre, cupsd transmet le résultat à un backend qui se charge de l'impression. Les échanges entre cupsd et ces programmes se font via des répertoires de spools et des tubes.
Le Fichier /etc/cups/cupsd.conf
Le fichier de configuration de CUPS est /etc/cups/cupsd.conf. Dans ce fichier on peut trouver :
- le port d'ecoute d'IPP
- les comptes utilisateur et groupe sous lesquels s'exécute le serveur
- le niveau de journalisation
- la configuration du serveur Browse, c'est-à-dire de découverte des imprimantes réseaux
- les ACL d'accès au spools
- les ACL d'accès à l'administration du serveur.
root@debian11:~# more /etc/cups/cupsd.conf # # Configuration file for the CUPS scheduler. See "man cupsd.conf" for a # complete description of this file. # # Log general information in error_log - change "warn" to "debug" # for troubleshooting... LogLevel warn PageLogFormat # Specifies the maximum size of the log files before they are rotated. The value "0" disables log rotation. MaxLogSize 0 # Default error policy for printers ErrorPolicy retry-job # Only listen for connections from the local machine. Listen localhost:631 Listen /run/cups/cups.sock # Show shared printers on the local network. Browsing On BrowseLocalProtocols dnssd # Default authentication type, when authentication is required... DefaultAuthType Basic # Web interface setting... WebInterface Yes # Restrict access to the server... <Location /> --More--(12%)
Filtres
Les filtres disponibles au système CUPS se trouvent dans le répertoire /usr/lib/cups/filter :
root@debian11:~# ls /usr/lib/cups/filter bannertopdf commandtopclx gstoraster imagetoubrl pdftops rastertolabel svgtopdf texttops xfigtopdf brftoembosser commandtops gziptoany imageubrltoindexv3 pdftoraster rastertopclm sys5ippprinter texttotext brftopagedbrf emftopdf imagetobrf imageubrltoindexv4 pstops rastertopclx textbrftoindexv3 vectortobrf cgmtopdf foomatic-rip imagetopdf mupdftoraster rastertoepson rastertopdf textbrftoindexv4 vectortopdf cmxtopdf gstopdf imagetops musicxmltobrf rastertoescpx rastertops texttobrf vectortoubrl commandtoescpx gstopxl imagetoraster pdftopdf rastertohp rastertopwg texttopdf wmftopdf
Backends
Les Backends disponibles au système CUPS se trouvent dans le répertoire /usr/lib/cups/backend :
root@debian11:~# ls /usr/lib/cups/backend beh cups-brf dnssd driverless driverless-fax http https implicitclass ipp ipps lpd mdns parallel serial snmp socket usb
La liste des backends reconnus par CUPS peut être obtenue en saisissant la commande suivante :
root@debian11:~# lpinfo -v file cups-brf:/ network beh network ipps network http network socket network lpd network https network ipp
Il y a un type de backend par liaison locale d'imprimante (usb, série, parallèle). Il peut y avoir aussi un backend par type de protocole réseau :
Backend | Description |
---|---|
IPP | Client IPP |
LPD | Client LPD |
SMB | Client SMB |
Socket | Client JetDirect sur port tcp/9100 |
Pap/cap | Client AppleTalk |
Journaux
Les journaux de CUPS se trouvent dans /var/log/cups :
root@debian11:~# ls -l /var/log/cups total 36 -rw-r----- 1 root adm 415 Jun 6 09:58 access_log -rw-r----- 1 root adm 649 Jun 6 00:00 access_log.1 -rw-r----- 1 root adm 201 Jun 5 00:00 access_log.2.gz -rw-r----- 1 root adm 201 Jun 4 00:00 access_log.3.gz -rw-r----- 1 root adm 200 Jun 3 00:00 access_log.4.gz -rw-r----- 1 root adm 200 Jun 2 00:00 access_log.5.gz -rw-r----- 1 root adm 205 Jun 1 00:00 access_log.6.gz -rw-r----- 1 root adm 203 May 31 00:00 access_log.7.gz -rw-r----- 1 root adm 172 Jun 6 09:58 error_log
Imprimantes
La commande suivante liste les imprimantes connues de CUPS :
root@debian11:~# lpinfo -m | more drv:///sample.drv/dymo.ppd DYMO Label Printer drv:///sample.drv/epson9.ppd Epson 9-Pin Series drv:///sample.drv/epson24.ppd Epson 24-Pin Series lsb/usr/cupsfilters/Fuji_Xerox-DocuPrint_CM305_df-PDF.ppd Fuji Xerox DocuPrint CM305 df PDF drv:///generic-brf.drv/gen-brf.ppd Generic Braille embosser, 1.0 drv:///cupsfilters.drv/pwgrast.ppd Generic IPP Everywhere Printer drv:///sample.drv/generpcl.ppd Generic PCL Laser Printer lsb/usr/cupsfilters/Generic-PDF_Printer-PDF.ppd Generic PDF Printer drv:///sample.drv/generic.ppd Generic PostScript Printer drv:///cupsfilters.drv/textonly.ppd Generic Text-Only Printer drv:///generic-ubrl.drv/gen-ubrl.ppd Generic UBRL generator, 1.0 lsb/usr/cupsfilters/HP-Color_LaserJet_CM3530_MFP-PDF.ppd HP Color LaserJet CM3530 MFP PDF lsb/usr/cupsfilters/pxlcolor.ppd HP Color LaserJet Series PCL 6 CUPS drv:///cupsfilters.drv/dsgnjt600pcl.ppd HP DesignJet 600 pcl, 1.0 drv:///cupsfilters.drv/dsgnjt750cpcl.ppd HP DesignJet 750c pcl, 1.0 drv:///cupsfilters.drv/dsgnjt1050cpcl.ppd HP DesignJet 1050c pcl, 1.0 drv:///cupsfilters.drv/dsgnjt4000pcl.ppd HP DesignJet 4000 pcl, 1.0 drv:///cupsfilters.drv/dsgnjtt790pcl.ppd HP DesignJet T790 pcl, 1.0 drv:///cupsfilters.drv/dsgnjtt1100pcl.ppd HP DesignJet T1100 pcl, 1.0 drv:///sample.drv/deskjet.ppd HP DeskJet Series drv:///sample.drv/laserjet.ppd HP LaserJet Series PCL 4/5 lsb/usr/cupsfilters/pxlmono.ppd HP LaserJet Series PCL 6 CUPS drv:///indexv3.drv/i4waves3.ppd Index 4-Waves PRO, 1.0 drv:///indexv3.drv/i4x4pro3.ppd Index 4x4 PRO V3, 1.0 drv:///indexv3.drv/ibasicd3.ppd Index Basic-D V3, 1.0 drv:///indexv4.drv/ibasicd4.ppd Index Basic-D V4/V5, 1.0 drv:///indexv3.drv/ibasics3.ppd Index Basic-S V3, 1.0 drv:///indexv4.drv/ibasics4.ppd Index Basic-S V4/V5, 1.0 drv:///indexv4.drv/ibrlbox4.ppd Index Braille Box V4/V5, 1.0 drv:///indexv3.drv/ieveres3.ppd Index Everest-D V3, 1.0 drv:///indexv4.drv/ieveres4.ppd Index Everest-D V4/V5, 1.0 drv:///sample.drv/intelbar.ppd Intellitech IntelliBar Label Printer, 2.3 --More--
LAB #1 - Administration de Cups
Le serveur CUPS est administré en ligne de commande par l'utilisation d'une ou de plusieurs des commandes suivantes :
Commande | Description |
---|---|
lpadmin | Principale commande d'administration pour ajouter, supprimer et modifier des files d'attente |
accept | Autorise le dépôt de requêtes dans un spool |
reject | Interdit le dépôt de requêtes dans un spool |
cupsenable | Autorise le traitement des requêtes dans un spool |
cupsdisable | Interdit le traitement des requêtes dans un spool |
lpstat | Liste des travaux en attente |
cancel | Supprime des requêtes |
lpmove | Déplace des travaux en attente d'un spool à un autre |
lpinfo | Affiche la liste des filtres ou backends disponibles |
lppasswd | Gère les comptes et les mots de passe pour l'accès web |
1.1 - La Commande lpstat
Pour consulter la liste des files d'attente, il convient d'utiliser donc la commande lpstat :
root@debian11:~# lpstat -t scheduler is running no system default destination lpstat: No destinations added. lpstat: No destinations added. lpstat: No destinations added. lpstat: No destinations added.
1.2 - La Commande lpadmin
Créez maintenant une file d'attente sans pilote. Les imprimantes sans pilote utilisent le mode raw :
root@debian11:~# lpadmin -p imp1 -v socket://localhost:12000 -m raw lpadmin: Raw queues are deprecated and will stop working in a future version of CUPS.
Les options de cette commande sont les suivantes :
Options | Description |
---|---|
-p | Le nom de la file |
-v | L'imprimante physique ou réseau sous forme URL |
-m | Le modèle à utiliser (un fichier ayant une extension ppd qui identifie l'imprimante) |
Les types de URL possible sont :
URL | Description |
---|---|
file:/chemin/fichier | Impression dans un fichier |
http://serveur:631/ipp/port1 | Impression via http |
lpd://serveur/queue | Impression via LPD |
ipp://serveur:631/printers/queue | Impression via IPP |
smb://workgroup/serveur/nompartage | Impression via SMB |
socket://serveur | Impression via JetDirect |
serial:/dev/ttyS0?baud=1200+bits=8+parity=none+flow=none | Impression via port série |
parallel:/dev/lp0 | Impression via port parallèle |
Vérifiez la création de la file d'attente :
root@debian11:~# lpstat -t scheduler is running no system default destination device for imp1: socket://localhost:12000 imp1 not accepting requests since Mon 06 Jun 2022 10:01:43 AM CEST - reason unknown printer imp1 disabled since Mon 06 Jun 2022 10:01:43 AM CEST - reason unknown
1.3 - Les Commandes accept, cupsenable
Il est maintenant possible d'activer l'imprimante grâce aux commandes accept et cupsenable :
root@debian11:~# cupsaccept imp1 root@debian11:~# lpstat -t scheduler is running no system default destination device for imp1: socket://localhost:12000 imp1 accepting requests since Mon 06 Jun 2022 10:01:43 AM CEST printer imp1 disabled since Mon 06 Jun 2022 10:01:43 AM CEST - reason unknown root@debian11:~# cupsenable imp1 root@debian11:~# lpstat -t scheduler is running no system default destination device for imp1: socket://localhost:12000 imp1 accepting requests since Mon 06 Jun 2022 10:03:48 AM CEST printer imp1 is idle. enabled since Mon 06 Jun 2022 10:03:48 AM CEST
Important : Notez que les deux commandes cupsaccept et cupsenable ont leurs opposées : cupsreject et cupsdisable.
Pour nommer une imprimante en tant que la destination par défaut, il convient d'utiliser la commande lpadmin avec l'option -d :
root@debian11:~# lpadmin -d imp1 root@debian11:~# lpstat -t scheduler is running system default destination: imp1 device for imp1: socket://localhost:12000 imp1 accepting requests since Mon 06 Jun 2022 10:03:48 AM CEST printer imp1 is idle. enabled since Mon 06 Jun 2022 10:03:48 AM CEST
Vous allez maintenant créer une file d'attente dans CUPS pour une imprimante HP Color LaserJet Series PCL 6 utilisant le fichier pxlcolor.ppd, appelée Imprimante1 et étant connectée au port parallèle.
Sous Debian 11, pour créer la file d'attente physique associée à cette imprimante, il convient de saisir les commandes suivantes :
root@debian11:~# mknod /dev/lp0 c 6 0 root@debian11:~# ls -l /dev/lp0 crw-r--r-- 1 root root 6, 0 Jun 6 10:22 /dev/lp0 root@debian11:~# chgrp lp /dev/lp0 root@debian11:~# chmod 660 /dev/lp0 root@debian11:~# ls -l /dev/lp0 crw-rw---- 1 root lp 6, 0 Jun 6 10:22 /dev/lp0
Créez maintenant la file d'attente dans CUPS :
root@debian11:~# lpadmin -p Imprimante1 -E -v parallel:/dev/lp0 -i /usr/share/ppd/cupsfilters/pxlcolor.ppd lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS. root@debian11:~# lpstat -t scheduler is running system default destination: imp1 device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/lp0 imp1 accepting requests since Mon 06 Jun 2022 10:03:48 AM CEST Imprimante1 accepting requests since Mon 06 Jun 2022 10:37:26 AM CEST printer imp1 is idle. enabled since Mon 06 Jun 2022 10:03:48 AM CEST printer Imprimante1 is idle. enabled since Mon 06 Jun 2022 10:37:26 AM CEST
Important : Notez que l'option -E permet de combiner les options cupsaccept et cupsenable de la commande lpadmin.
Testez maintenant votre imprimante fictive :
root@debian11:~# echo "Test Printer File" > /tmp/test.print root@debian11:~# lpadmin -d Imprimante1 root@debian11:~# lpstat -t scheduler is running system default destination: Imprimante1 device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/lp0 imp1 accepting requests since Mon 06 Jun 2022 10:03:48 AM CEST Imprimante1 accepting requests since Mon 06 Jun 2022 10:37:26 AM CEST printer imp1 is idle. enabled since Mon 06 Jun 2022 10:03:48 AM CEST printer Imprimante1 is idle. enabled since Mon 06 Jun 2022 10:37:26 AM CEST root@debian11:~# lp /tmp/test.print request id is Imprimante1-1 (1 file(s))
Important : Notez que l'impression a eu lieu et la requête s'appelle Imprimante1-1.
Créez maintenant une deuxième file d'attente Imprimante2 et saisissez la commande lpstat -t. Vous devez obtenir un résultat similaire à celui-ci :
root@debian11:~# lpadmin -p Imprimante2 -E -v parallel:/dev/lp1 -i /usr/share/ppd/cupsfilters/pxlcolor.ppd lpadmin: Printer drivers are deprecated and will stop working in a future version of CUPS. root@debian11:~# lpstat -t scheduler is running system default destination: Imprimante1 device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/lp0 device for Imprimante2: parallel:/dev/lp1 imp1 accepting requests since Mon 06 Jun 2022 10:03:48 AM CEST Imprimante1 accepting requests since Mon 06 Jun 2022 10:39:32 AM CEST Imprimante2 accepting requests since Mon 06 Jun 2022 10:41:06 AM CEST printer imp1 is idle. enabled since Mon 06 Jun 2022 10:03:48 AM CEST printer Imprimante1 now printing Imprimante1-1. enabled since Mon 06 Jun 2022 10:39:32 AM CEST Printer not connected; will retry in 30 seconds. printer Imprimante2 is idle. enabled since Mon 06 Jun 2022 10:41:06 AM CEST Imprimante1-1 root 1024 Mon 06 Jun 2022 10:39:32 AM CEST
1.4 - Classe d'imprimantes
Une classe est un ensemble ordonné d'imprimantes. Les requêtes envoyées à la classe sont imprimées sur la première imprimante disponible.
Pour créer une classe il convient d'utiliser la commande lpadmin avec l'option -c suivie par le nom de la classe à créer :
root@debian11:~# lpadmin -p Imprimante1 -c classe1 root@debian11:~# lpadmin -p Imprimante2 -c classe1
Vérifiez la création de la classe :
root@debian11:~# lpstat -t scheduler is running system default destination: Imprimante1 members of class classe1: Imprimante1 Imprimante2 device for classe1: ///dev/null device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/lp0 device for Imprimante2: parallel:/dev/lp1 classe1 not accepting requests since Mon 06 Jun 2022 10:43:24 AM CEST - reason unknown imp1 accepting requests since Mon 06 Jun 2022 10:03:48 AM CEST Imprimante1 accepting requests since Mon 06 Jun 2022 10:39:32 AM CEST Imprimante2 accepting requests since Mon 06 Jun 2022 10:41:06 AM CEST printer classe1 disabled since Mon 06 Jun 2022 10:43:24 AM CEST - reason unknown printer imp1 is idle. enabled since Mon 06 Jun 2022 10:03:48 AM CEST printer Imprimante1 now printing Imprimante1-1. enabled since Mon 06 Jun 2022 10:39:32 AM CEST Printer not connected; will retry in 30 seconds. printer Imprimante2 is idle. enabled since Mon 06 Jun 2022 10:41:06 AM CEST Imprimante1-1 root 1024 Mon 06 Jun 2022 10:39:32 AM CEST
1.5 - Le fichier /etc/cups/printers.conf
La configuration globale des files d'attente se trouve dans le fichier /etc/cups/printers.conf :
root@debian11:~# cat /etc/cups/printers.conf # Printer configuration file for CUPS v2.3.3op2 # Written by cupsd # DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING NextPrinterId 9 <Printer imp1> PrinterId 1 UUID urn:uuid:8322102e-e029-325b-42eb-ed63c7904196 Info imp1 DeviceURI socket://localhost:12000 State Idle StateTime 1654502628 ConfigTime 1654502503 Type 4 Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy retry-job </Printer> <DefaultPrinter Imprimante1> PrinterId 7 UUID urn:uuid:ba7e38f7-0547-387e-6189-7bb341799a36 Info Imprimante1 MakeModel HP Color LaserJet Series PCL 6 CUPS DeviceURI parallel:/dev/lp0 State Idle StateTime 1654504772 ConfigTime 1654504646 Type 8400972 Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy retry-job </DefaultPrinter> <Printer Imprimante2> PrinterId 8 UUID urn:uuid:751df4ab-afb6-3fce-4a26-80d0f2d131bd Info Imprimante2 MakeModel HP Color LaserJet Series PCL 6 CUPS DeviceURI parallel:/dev/lp1 State Idle StateTime 1654504866 ConfigTime 1654504866 Type 8400972 Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy retry-job </Printer>
1.6 - Le fichier /etc/cups/classes.conf
La configuration globale des classes se trouve dans le fichier /etc/cups/classes.conf :
root@debian11:~# cat /etc/cups/classes.conf # Class configuration file for CUPS v2.3.3op2 # Written by cupsd # DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING <Class classe1> PrinterId 9 UUID urn:uuid:f0d54c11-d472-380d-70ba-1da156d82965 Info classe1 State Stopped StateTime 1654505004 Accepting No Shared Yes JobSheets none none Printer Imprimante1 Printer Imprimante2 QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy retry-current-job </Class>
1.7 - La Commande cancel
Pour annuler l'impression il convient d'utiliser la commande cancel:
root@debian11:~# lpstat Imprimante1-1 root 1024 Mon 06 Jun 2022 10:39:32 AM CEST root@debian11:~# cancel Imprimante1-1 root@debian11:~# lpstat root@debian11:~#
1.8 - La Commande lpmove
La commande lpmove permet de déplacer tous les jobs d'une file à une autre.
Déclarez l'imprimante imp1 comme étant l'imprimante par défault :
root@debian11:~# lpadmin -d imp1
Créez ensuite une nouvelle impression :
root@debian11:~# lp /tmp/test.print request id is imp1-2 (1 file(s)) root@debian11:~# lpstat imp1-2 root 1024 Mon 06 Jun 2022 10:47:39 AM CEST
Déplacer ce job vers la classe1 :
root@debian11:~# lpmove imp1 classe1 root@debian11:~# lpstat classe1-2 root 1024 Mon 06 Jun 2022 10:47:39 AM CEST
Pour retirer une file d'une classe, il convient d'utiliser la commande lpadmin :
root@debian11:~# lpadmin -p Imprimante1 -r classe1 root@debian11:~# lpadmin -p Imprimante2 -r classe1 root@debian11:~# lpstat -t scheduler is running system default destination: imp1 device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/lp0 device for Imprimante2: parallel:/dev/lp1 imp1 accepting requests since Mon 06 Jun 2022 10:50:11 AM CEST Imprimante1 accepting requests since Mon 06 Jun 2022 10:46:34 AM CEST Imprimante2 accepting requests since Mon 06 Jun 2022 10:41:06 AM CEST printer imp1 is idle. enabled since Mon 06 Jun 2022 10:50:11 AM CEST printer Imprimante1 is idle. enabled since Mon 06 Jun 2022 10:46:34 AM CEST printer Imprimante2 is idle. enabled since Mon 06 Jun 2022 10:41:06 AM CEST
Important : Notez que la classe est automatiquement supprimée quand elle est vide.
Pour supprimer les files créées il convient de nouveau à utiliser la commande lpadmin :
root@debian11:~# lpadmin -x Imprimante1 root@debian11:~# lpadmin -x Imprimante2 root@debian11:~# lpadmin -x Imp1 root@debian11:~# lpstat -t scheduler is running no system default destination lpstat: No destinations added. lpstat: No destinations added. lpstat: No destinations added. lpstat: No destinations added.
1.9 - L'interface Web
CUPS peut également être administré en utilisant l'interface Web sur le port 631/tcp.
Copyright © 2023 Hugh Norris.