CUPS

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Domaine Impression (CUPS — Common Unix Printing System)
Commande lpadmin, lpstat, lpr, cupsenable/cupsdisable
Contexte RHEL/CentOS et distributions Linux généralistes
Voir aussi Systemctl (démarrage du service) · Iptables (filtrage du port 631)

CUPS (Common Unix Printing System) est le système d'impression standard sous Linux. Il expose une interface d'administration en ligne de commande (lpadmin, lpstat...) ainsi qu'une interface web sur le port 631, et gère files d'attente, classes d'imprimantes et pilotes (PPD).

Installation

yum install cups cups-client cups-libs hal-cups-utils

# Paquets de pilotes PPD (drivers libres)
yum install foomatic-db.noarch foomatic-db-ppds.noarch
yum install ghostscript

Démarrage du service :

service cups start        # SysV init (RHEL/CentOS 5/6)
systemctl start cups      # systemd (RHEL7+, voir [[Systemctl]])

Fichiers de configuration

Tous situés dans /etc/cups/ :

  • classes.conf — informations sur chaque classe d'imprimante
  • client.conf — nom du serveur CUPS implicite pour les machines clientes
  • cupsd.conf — fichier de configuration principal du service (cupsd)
  • mime.convs — filtres de conversion de fichiers et leurs coûts respectifs (à ne
 normalement pas éditer)
  • mime.types — formats de fichiers reconnus et règles de détection (à ne normalement
 pas éditer)
  • printers.conf — informations sur chaque imprimante déclarée

Directives de cupsd.conf

vi /etc/cups/cupsd.conf

Ne pas exiger HTTPS pour l'accès à l'interface web :

DefaultEncryption Never

Limites sur les travaux d'impression :

MaxJobs 100
MaxJobsPerPrinter 100
MaxJobsPerUser 100
ServerName myserver.domain.com

Groupe d'administration et écoute réseau :

SystemGroup lpadmin
Listen localhost:631
Listen *:631

Restreindre l'accès à l'interface d'administration par IP (⚠️ ancienne syntaxe de contrôle d'accès à la Apache, dépréciée au profit de Require dans les versions récentes de CUPS — à vérifier selon la version installée) :

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow 10.2.0.0/16
</Location>

Après toute modification, recharger ou redémarrer le service (service cups restart / systemctl restart cups).

Ajouter et gérer une imprimante

Emplacement des fichiers PPD fournis par le système : /usr/share/cups/model — base de pilotes en ligne : https://www.openprinting.org/printers

# Lister les pilotes et périphériques disponibles
lpinfo -v      # périphériques/URI détectés
lpinfo -m      # modèles de pilotes disponibles

# Ajouter une imprimante
lpadmin -p printer-name -v device-uri -m model -L location -E
lpadmin -p printer-name -v socket://IP_DNS -m model -E
lpadmin -p hplj -v socket://192.168.0.6:9100/ -E
lpadmin -p lp1nd -v lpd://printhost/lp1nd -E
lpadmin -p lp0 -L "Level 2 South" -D "HP LaserJet 4"
lpadmin -p printer-name -E -v /dev/usb/lp0 -m /backup/downloads/foo2zjs/PPD/HP-LaserJet_1020.ppd

# Classes d'imprimantes et quotas
lpadmin -p printername -c classname
lpadmin -p classname -o job-sheets-default=none,standard
lpadmin -p classname -o job-k-limit=1234

# Changer le fichier PPD d'une imprimante existante
lpadmin -p printer1 -n /path/mynewHPppdfile.ppd
lpadmin -p lp7 -P /usr/share/postscript/ppd/HP_LaserJet_4050_Series.ppd
lpadmin -p lp11 -P LEXC750.PPD

# Définir l'imprimante par défaut
lpadmin -d printer_name

# Supprimer une imprimante
lpadmin -x Printer_Name

-E active l'imprimante et accepte les travaux dès sa création (équivalent à enchaîner cupsenable + accept).

Activer / désactiver une imprimante

cupsenable Imprimante1 Imprimante2     # démarrer des imprimantes spécifiées
cupsdisable Imprimante1 Imprimante2    # arrêter des imprimantes spécifiées

# Démarrer toutes les imprimantes connues
cupsenable $(lpstat -a | cut -d " " -f 1)

accept hplj1020                        # faire accepter les travaux à une imprimante

Options d'impression

lpoptions -p lp7 -l                    # afficher les options disponibles
lpoptions -p lp7 -o PageSize=A4        # modifier une option
lpoptions -p lp1 -o PageSize=A4

Statut et supervision

lpstat -a      # informations générales (imprimantes acceptant des travaux)
lpstat -o      # travaux en cours, toutes imprimantes
lpstat -t      # statut complet (imprimantes + travaux)
lpstat -o Printer_Name   # travaux en cours pour une imprimante donnée
lpq -a         # lister les travaux en attente

Gestion des travaux

lpr /usr/share/cups/data/testprint -P printer-name   # envoyer une page de test

lprm num_job              # supprimer un travail précis
lprm -P Printer_Name -    # supprimer tous les travaux d'une imprimante
cancel -a Printer_Name    # annuler tous les travaux d'une imprimante

Voir aussi

  • Systemctl — démarrage/arrêt du service cupsd sous systemd
  • Iptables — filtrage réseau du port d'administration 631