CUPS
| 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