Niveau : Admin Junior | Numéro de la Leçon | Dernière Modification |
---|---|---|
2/4 | <progrecss 9/12 style=inline /> | 2020/01/30 03:28 |
Le logiciel Common Unix Printing System est un système de gestion des impressions conçu pour Unix.
Cups utilise le protocole IPP sur les ports udp/631 et tcp/631.
Ce protocole :
Cups peut aussi utiliser les deux protocoles suivants :
cups 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 principal fichier concerné par CUPS est :
Le fichier de configuration de CUPS est /etc/cups/cupsd.conf. Dans ce fichier on peut trouver :
opensuse:~ # cat /etc/cups/cupsd.conf # # "$Id: cupsd.conf.in 9310 2010-09-21 22:34:57Z mike $" # # Sample 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 # Administrator user group... SystemGroup sys root # Only listen for connections from the local machine. Listen localhost:631 Listen /var/run/cups/cups.sock # Show shared printers on the local network. Browsing On BrowseOrder allow,deny BrowseAllow all BrowseLocalProtocols CUPS # Default authentication type, when authentication is required... DefaultAuthType Basic # Restrict access to the server... <Location /> Order allow,deny Allow 127.0.0.2 </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny </Location> # Set the default printer/job policies... <Policy default> # Job-related operations must be done by the owner or an administrator... <Limit Create-Job Print-Job Print-URI Validate-Job> Order deny,allow </Limit> <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document> Require user @OWNER @SYSTEM Order deny,allow </Limit> # All administration operations require an administrator to authenticate... <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices> AuthType Default Require user @SYSTEM Order deny,allow </Limit> # All printer operations require a printer operator to authenticate... <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs> AuthType Default Require user @SYSTEM Order deny,allow </Limit> # Only the owner or an administrator can cancel or authenticate a job... <Limit Cancel-Job CUPS-Authenticate-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit> <Limit All> Order deny,allow </Limit> </Policy> # Set the authenticated printer/job policies... <Policy authenticated> # Job-related operations must be done by the owner or an administrator... <Limit Create-Job Print-Job Print-URI Validate-Job> AuthType Default Order deny,allow </Limit> <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job CUPS-Get-Document> AuthType Default Require user @OWNER @SYSTEM Order deny,allow </Limit> # All administration operations require an administrator to authenticate... <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default> AuthType Default Require user @SYSTEM Order deny,allow </Limit> # All printer operations require a printer operator to authenticate... <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs> AuthType Default Require user @SYSTEM Order deny,allow </Limit> # Only the owner or an administrator can cancel or authenticate a job... <Limit Cancel-Job CUPS-Authenticate-Job> AuthType Default Require user @OWNER @SYSTEM Order deny,allow </Limit> <Limit All> Order deny,allow </Limit> </Policy> # # End of "$Id: cupsd.conf.in 9310 2010-09-21 22:34:57Z mike $". # # The policy below is added by openSUSE/Novell during build of our cups package. # The policy 'allowallforanybody' is totally open and insecure and therefore # it can only be used within an internal network where only trused users exist # and where the cupsd is not accessible at all from any external host, see # http://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings # Have in mind that any user who is allowed to do printer admin tasks # can change the print queues as he likes - e.g. send copies of confidental # print jobs from an internal network to any external destination, see # http://en.opensuse.org/SDB:CUPS_in_a_Nutshell # For documentation regarding 'Managing Operation Policies' see # http://www.cups.org/documentation.php/doc-1.4/policies.html <Policy allowallforanybody> <Limit All> Order deny,allow Allow from all </Limit> </Policy> # Explicitly set the CUPS 'default' policy to be used by default: DefaultPolicy default # End of additions by openSUSE/Novell.
Les filtres disponibles au système CUPS se trouvent dans le répertoire /usr/lib/cups/filter :
opensuse:~ # ls /usr/lib/cups/filter bannertops gziptoany pdftops rastertoescpx commandtocanon hpcac pdftoraster rastertogutenprint.5.2 commandtoepson hpcups pstops rastertohp commandtoescpx hpcupsfax pstopxl rastertolabel commandtopclx hpgltops pstoraster rastertopclx commandtops hplipjs pstotiff texttops foomatic-rip imagetops rastertodymo foomatic-rip-hplip imagetoraster rastertoepson
Les Backends disponibles au système CUPS se trouvent dans le répertoire /usr/lib/cups/backend :
opensuse:~ # ls /usr/lib/cups/backend beh hpfax ipp parallel scsi smb socket hp http lpd pipe serial snmp usb
La liste des backends reconnus par CUPS peut être obtenue en saisissant la commande suivante :
opensuse:~ # lpinfo -v direct scsi network socket direct pipe network lpd network http network ipp network beh direct hp network smb direct hpfax
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 |
Les journaux de CUPS se trouvent dans /var/log/cups :
opensuse:~ # ls -l /var/log/cups/ total 4 -rw-r--r-- 1 root lp 382 Apr 4 12:57 access_log
La commande suivante liste les imprimantes connues de CUPS :
opensuse:~ # lpinfo -m | more manufacturer-PPDs/hplip/apollo-2100.ppd.gz Apollo 2100, hpcups 3.11.1.19 manufacturer-PPDs/hplip/apollo-2150.ppd.gz Apollo 2150, hpcups 3.11.1.19 manufacturer-PPDs/hplip/apollo-2200.ppd.gz Apollo 2200, hpcups 3.11.1.19 manufacturer-PPDs/hplip/apollo-2500.ppd.gz Apollo 2500, hpcups 3.11.1.19 manufacturer-PPDs/hplip/apollo-2600.ppd.gz Apollo 2600, hpcups 3.11.1.19 manufacturer-PPDs/hplip/apollo-2650.ppd.gz Apollo 2650, hpcups 3.11.1.19 gutenprint/5.2/C/stp-pcl-apollo-p2100.5.2.ppd.gz Apollo P-2100 - CUPS+Gutenprint v5.2.6 gutenprint/5.2/C/stp-pcl-apollo-p2100.5.2.sim.ppd.gz Apollo P-2100 - CUPS+Gutenp rint v5.2.6 Simplified gutenprint/5.2/C/stp-pcl-apollo-p2150.5.2.ppd.gz Apollo P-2150 - CUPS+Gutenprint v5.2.6 gutenprint/5.2/C/stp-pcl-apollo-p2150.5.2.sim.ppd.gz Apollo P-2150 - CUPS+Gutenp rint v5.2.6 Simplified gutenprint/5.2/C/stp-pcl-apollo-p2200.5.2.ppd.gz Apollo P-2200 - CUPS+Gutenprint v5.2.6 gutenprint/5.2/C/stp-pcl-apollo-p2200.5.2.sim.ppd.gz Apollo P-2200 - CUPS+Gutenp rint v5.2.6 Simplified gutenprint/5.2/C/stp-pcl-apollo-p2250.5.2.ppd.gz Apollo P-2250 - CUPS+Gutenprint v5.2.6 gutenprint/5.2/C/stp-pcl-apollo-p2250.5.2.sim.ppd.gz Apollo P-2250 - CUPS+Gutenp rint v5.2.6 Simplified gutenprint/5.2/C/stp-pcl-apollo-p2500.5.2.ppd.gz Apollo P-2500 - CUPS+Gutenprint --More--
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 |
Pour consulter la liste des files d'attente, il convient d'utiliser donc la commande lpstat :
opensuse:~ # 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.
Créez maintenant une file d'attente sans pilote. Les imprimantes sans pilote utilisent le mode raw :
opensuse:~ # lpadmin -p imp1 -v socket://localhost:12000 -m raw
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 :
opensuse:~ # lpstat -t scheduler is running no system default destination device for imp1: socket://localhost:12000 imp1 not accepting requests since Wed Apr 4 13:00:57 2012 - reason unknown printer imp1 disabled since Wed Apr 4 13:00:57 2012 - reason unknown
Il est maintenant possible d'activer l'imprimante grâce aux commandes accept et enable :
opensuse:~ # accept imp1 opensuse:~ # lpstat -t scheduler is running no system default destination device for imp1: socket://localhost:12000 imp1 accepting requests since Wed Apr 4 13:00:57 2012 printer imp1 disabled since Wed Apr 4 13:00:57 2012 - reason unknown opensuse:~ # cupsenable imp1 opensuse:~ # lpstat -t scheduler is running no system default destination device for imp1: socket://localhost:12000 imp1 accepting requests since Wed Apr 4 13:02:07 2012 printer imp1 is idle. enabled since Wed Apr 4 13:02:07 2012
<note important> Notez que les deux commandes accept et cupsenable ont leurs opposées : reject et cupsdisable. </note>
Pour nommer une imprimante en tant que la destination par défaut, il convient d'utiliser la commande lpadmin avec l'option -d :
opensuse:~ # lpadmin -d imp1 opensuse:~ # lpstat -t scheduler is running system default destination: imp1 device for imp1: socket://localhost:12000 imp1 accepting requests since Wed Apr 4 13:02:07 2012 printer imp1 is idle. enabled since Wed Apr 4 13:02:07 2012
Vous allez mainteant créer une fille d'attente 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 :
opensuse:~ # lpadmin -p Imprimante1 -E -v parallel:/dev/impr1 -m pxlcolor.ppd opensuse:~ # lpstat -t scheduler is running system default destination: imp1 device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/impr1 imp1 accepting requests since Wed Apr 4 13:02:07 2012 Imprimante1 accepting requests since Wed Apr 4 13:04:23 2012 printer imp1 is idle. enabled since Wed Apr 4 13:02:07 2012 printer Imprimante1 is idle. enabled since Wed Apr 4 13:04:23 2012
<note important> Notez que l'option -E permet de combiner les commandes accept et cupsenable avec lpadmin. </note>
Puisque vous n'avez pas réellement d'imprimante connectée à votre système, pour créer la file d'attente physique associée à cette imprimante il convient de saisir les commandes suivantes :
opensuse:~ # touch /dev/impr1 ; chgrp lp /dev/impr1 ; chmod 660 /dev/impr1
Testez maintenant votre imprimante fictive :
opensuse:~ # echo "Test Printer File" > /tmp/test.print opensuse:~ # lpadmin -d Imprimante1 opensuse:~ # lpstat -t scheduler is running system default destination: Imprimante1 device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/impr1 imp1 accepting requests since Wed Apr 4 13:02:07 2012 Imprimante1 accepting requests since Wed Apr 4 13:04:23 2012 printer imp1 is idle. enabled since Wed Apr 4 13:02:07 2012 printer Imprimante1 is idle. enabled since Wed Apr 4 13:04:23 2012 opensuse:~ # lp /tmp/test.print request id is Imprimante1-1 (1 file(s))
<note important> Notez que l'impression a eu lieu et la requête s'appelle Imprimante1-1. </note>
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 :
opensuse:~ # lpadmin -p Imprimante2 -E -v parallel:/dev/impr2 -m pxlcolor.ppd opensuse:~ # lpstat -t scheduler is running system default destination: Imprimante1 device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/impr1 device for Imprimante2: parallel:/dev/impr2 imp1 accepting requests since Wed Apr 4 13:02:07 2012 Imprimante1 accepting requests since Wed Apr 4 13:06:35 2012 Imprimante2 accepting requests since Wed Apr 4 13:07:11 2012 printer imp1 is idle. enabled since Wed Apr 4 13:02:07 2012 printer Imprimante1 is idle. enabled since Wed Apr 4 13:06:35 2012 Printer is now online. printer Imprimante2 is idle. enabled since Wed Apr 4 13:07:11 2012
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 :
opensuse:~ # lpadmin -p Imprimante1 -c classe1 opensuse:~ # lpadmin -p Imprimante2 -c classe1
Vérifiez la création de la classe :
opensuse:~ # 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/impr1 device for Imprimante2: parallel:/dev/impr2 classe1 not accepting requests since Wed Apr 4 13:08:00 2012 - reason unknown imp1 accepting requests since Wed Apr 4 13:02:07 2012 Imprimante1 accepting requests since Wed Apr 4 13:06:35 2012 Imprimante2 accepting requests since Wed Apr 4 13:07:11 2012 printer classe1 disabled since Wed Apr 4 13:08:00 2012 - reason unknown printer imp1 is idle. enabled since Wed Apr 4 13:02:07 2012 printer Imprimante1 is idle. enabled since Wed Apr 4 13:06:35 2012 Printer is now online. printer Imprimante2 is idle. enabled since Wed Apr 4 13:07:11 2012
La configuration globale des files d'attente se trouve dans le fichier /etc/cups/printers.conf :
opensuse:~ # cat /etc/cups/printers.conf # Printer configuration file for CUPS v1.4.6 # Written by cupsd on 2012-04-04 13:07 # DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING <Printer imp1> Info imp1 DeviceURI socket://localhost:12000 State Idle StateTime 1333537327 Type 4 Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer </Printer> <DefaultPrinter Imprimante1> Info Imprimante1 MakeModel HP Color LaserJet Series PCL 6 CUPS DeviceURI parallel:/dev/impr1 State Idle StateTime 1333537595 Type 8400972 Filter application/vnd.cups-raw 0 - Filter application/vnd.cups-postscript 100 pstopxl Filter application/vnd.cups-pdf 0 pstopxl Filter application/vnd.cups-command 0 commandtops Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer </Printer> <Printer Imprimante2> Info Imprimante2 MakeModel HP Color LaserJet Series PCL 6 CUPS DeviceURI parallel:/dev/impr2 State Idle StateTime 1333537631 Type 8400972 Filter application/vnd.cups-raw 0 - Filter application/vnd.cups-postscript 100 pstopxl Filter application/vnd.cups-pdf 0 pstopxl Filter application/vnd.cups-command 0 commandtops Accepting Yes Shared Yes JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy stop-printer </Printer>
La configuration globale des classes se trouve dans le fichier /etc/cups/classes.conf :
opensuse:~ # cat /etc/cups/classes.conf # Class configuration file for CUPS v1.4.6 # Written by cupsd on 2012-04-04 13:08 # DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING <Class classe1> Info classe1 State Stopped StateTime 1333537680 Accepting No Shared Yes JobSheets none none Printer Imprimante1 Printer Imprimante2 QuotaPeriod 0 PageLimit 0 KLimit 0 OpPolicy default ErrorPolicy retry-current-job </Class>
Pour annuler l'impression il convient d'utiliser la commande cancel suivi du nom de la requête.
La commande lpmove permet de déplacer un job d'une file à une autre.
Déclarez l'imprimante imp1 comme étant l'imprimante par défault :
opensuse:~ # lpadmin -d imp1
Créez ensuite une nouvelle impression :
opensuse:~ # lp /tmp/test.print request id is imp1-2 (1 file(s)) opensuse:~ # lpstat imp1-2 root 1024 Wed Apr 4 13:21:34 2012
Déplacer ce job vers la classe1 :
opensuse:~ # lpmove imp1 classe1 opensuse:~ # lpstat classe1-2 root 1024 Wed Apr 4 13:21:34 2012
Pour retirer une file d'une classe, il convient d'utiliser la commande lpadmin :
opensuse:~ # lpadmin -p Imprimante1 -r classe1 opensuse:~ # lpadmin -p Imprimante2 -r classe1 opensuse:~ # lpstat -t scheduler is running system default destination: imp1 device for imp1: socket://localhost:12000 device for Imprimante1: parallel:/dev/impr1 device for Imprimante2: parallel:/dev/impr2 imp1 accepting requests since Wed Apr 4 13:21:59 2012 Imprimante1 accepting requests since Wed Apr 4 13:06:35 2012 Imprimante2 accepting requests since Wed Apr 4 13:07:11 2012 printer imp1 is idle. enabled since Wed Apr 4 13:21:59 2012 Connecting to printer... printer Imprimante1 is idle. enabled since Wed Apr 4 13:06:35 2012 Printer is now online. printer Imprimante2 is idle. enabled since Wed Apr 4 13:07:11 2012
<note important> Notez que la classe est automatiquement supprimée quand elle est vide. </note>
Pour supprimer les files créées il convient de nouveau à utiliser la commande lpadmin :
opensuse:~ # lpadmin -x Imprimante1 opensuse:~ # lpadmin -x Imprimante2 opensuse:~ # lpadmin -x Imp1 opensuse:~ # 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.
CUPS peut également être administré en utilisant l'interface Web. Celle-ci est disponible à l'adresse http://localhost:631.
<note> Lancez l'interface Web. Re-créez les mêmes imprimantes et la même classe. </note>
~~DISCUSSION:off~~
{(rater>id=opensuse_11_l115|name=cette page|type=rate|trace=user|tracedetails=1)}