Le système d'exploitation GNU-Linux/Le serveur d'impression CUPS
Introduction
modifierCUPS (Common Unix Printing System) est un serveur d'impression. CUPS permet ainsi d'imprimer sur une imprimante accessible sur le réseau ou locale (généralement connectée avec un câble USB). La communication avec les imprimantes utilise le protocole IPP (Internet Printing Protocol).
CUPS est très simple à configurer. De ce fait, il est de plus en plus souvent utilisé en remplacement de LPR (premier serveur sous UNIX).
Site Internet : www.cups.org
Le site linuxprinting.org liste les imprimantes compatibles avec CUPS.
Généralement, un système linux moderne est désormais livré avec les utilitaires nécessaire pour détecter, configurer et utiliser des imprimantes.
Installation (Debian)
modifierL'installation initiale de CUPS sous Debian peut se faire avec la commande suivante :
$ sudo apt install cups cups-pdf cups-bsd foomatic-db-compressed-ppds openprinting-ppds
Le paquet cups-pdf
fournit une imprimante virtuelle qui permet de générer des fichiers PDF.
Le paquet cups-bsd
fournit les commandes traditionnelles lpr
, lpq
et lprm
.
Les paquets foomatic-db-compressed-ppds
et openprinting-ppds
contiennent des descriptions PPD (PostScript Printer Description) pour un très grand nombre d'imprimantes.
D'autres paquets de PPD sont également disponibles comme hp-ppd
ou hpijs-ppds
.
Mais aussi le meta-paquet printer-driver-all-enforce
qui englobe une vingtaine de paquets de différents drivers CUPS.
Configuration côté serveur
modifierCUPS se configure via une interface web accessible par l'adresse http://localhost:631/ .
- On Clique sur Add Printer pour ajouter une imprimante
- On spécifie son nom, sa localisation physique et sa description. Exemple : HP1200, Salle D11, L'imprimante laser de la salle D11
- On choisit ensuite le périphérique correspondant au mode de connexion de l'imprimante avec le PC (ex: port parallèle, USB, ipp, http...etc)
- Si l'imprimante est partagée par un autre serveur CUPS, il faut spécifier l'adresse IPP de l'imprimante, comme par exemple : ipp://192.168.30.210/printers/hp1200
- On choisit ensuite le constructeur de l'imprimante. Dans le cas où votre constructeur n'est pas dans la liste, il faut télécharger sur Internet le fichier PPD (Printer Postscript Description) correspondant et utiliser le bouton Parcourir pour uploader le fichier
- On choisit ensuite le driver correspondant au modèle de l'imprimante. Certains drivers sont les mêmes pour des imprimantes différentes. Si on ne trouve pas son imprimante, il faut aller sur www.linuxprinting.org pour connaitre la compatibilité de l'imprimante avec un autre driver
- Pour valider les modifications, on s'authentifie avec le compte root pour que le logiciel puisse écrire le fichier de configuration de CUPS
Fichier de configuration
modifierLe fichier principal de configuration de CUPS est /etc/cups/cupsd.conf. Il faut le modifier pour indiquer à quel réseau on partage les imprimantes.
Tout d'abord, on indique à CUPS d'écouter sur toutes les interfaces réseaux. On remplace Listen localhost:631 par :
Listen *:631
Dans la balise <Location />, il faut rajouter "Allow" suivi de l'adresse du réseau sur lequel se trouve l'imprimante afin de permettre à mon réseau d'accéder à celle-ci.
# Restrict access to the server... <Location /> Order allow,deny Allow localhost Allow 192.168.30.0/24 </Location>
Lorsque ce fichier est modifié, il faut relancer le service :
# /etc/init.d/cupsys restart
Configuration côté client / utilisateur
modifierInterface(s) graphiques
modifierDes outils d'interface graphique permettant d'accéder au système CUPS existent :
- gtklp (Gtk/Gnome)
- system-config-printer-gnome (Gtk/Gnome)
Interface web
modifierComme pour la configuration côté serveur, on configure CUPS côté client via l'interface WEB.
Dans la procédure décrite ci dessus, au lieu de spécifier un périphérique local (port parallèle, USB ou autre), on spécifie l'adresse IPP de l'imprimante.
Exemple:
ipp://192.168.30.210/printers/HP1200
ou (sous Windows) :
http://192.168.30.210:631/printers/HP1200
Impression
modifierLes imprimantes sont normalement utilisables via les applications qui ont besoin d'imprimer (menu «Imprimer» !) : suite bureautique, navigateur internet...
Néanmoins, il est possible de les utiliser sans passer par une application, et même de contrôler directement l'état des imprimantes, en utilisant des commandes spécifiques du système.
Les commandes d'impression
modifierCes commandes sont fournies par le paquet cupsys-bsd installé précédement.
- La commande lpr
- permet d'imprimer un fichier :
$ lpr nom_fichier
Pour imprimer sur une imprimante en particulier :
$ lpr -P nom_imprimante nom_fichier
Pour spécifier le nombre de copies (ici 2 copies) :
$ lpr -#2 nom_fichier
- La commande lpq
- permet d'afficher la file d'impression (queue) et connaître les numéros de "job" :
$ lpq HP1200 is ready and printing Rank Owner Job File(s) Total Size active alex 12 fstab 1024 bytes 1st root 13 fstab 1024 bytes
- L'imprimante HP1200 est opérationnelle et en cours d'impression. C'est l'impression de l'utilisateur alex qui est en cours.
- L'impression de l'utilisateur root est en première position de la file d'attente.
Pour voir la file d'attente d'une imprimante en particulier :
$ lpq -P nom_imprimante
- La commande lprm
- (lp remove) permet de supprimer une impression de la file d'attente à l'aide de son numéro de "job" :
$ lprm num_job
Pour supprimer toute la file d'attente (cette action n'est permise que pour le compte root) :
# lprm -a
- La commande lpstat
- (lp statistiques) permet d'obtenir diverses statistiques
- La liste des imprimantes installées et l'imprimante par défaut
$ lpstat -s
- etc...
Supervision
modifierLa supervision s'intéresse au suivi du bon fonctionnement et à la détection (et correction!) des problèmes.
Logs
modifierLe premier outil de supervision est l'examen des fichiers «journaux» (logs) de fonctionnement du système CUPS. Ces fichiers sont localisés dans le répertoire
/var/log/cups
On y trouve trois type d'enregistrements
- access.log : enregistrement des accès d'impressions
- error.log : enregistrement des erreurs
- page.log : enregistrement des pages pour statistiques
Pou obtenir le maximum d'information, il faut positionner le mode Debug dans le fichier de configuration du serveur CUPS
LogLevel debug
Une surveillance simple dans un terminal :
sudo tail -f /var/log/cups/*_log