Introduction.
CUPS (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).
L'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 codice_1 fournit une imprimante virtuelle qui permet de générer des fichiers PDF.
Le paquet codice_2 fournit les commandes traditionnelles codice_3, codice_4 et codice_5.
Les paquets codice_6 et codice_7 contiennent des descriptions PPD (PostScript Printer Description) pour un très grand nombre d'imprimantes.
D'autres paquets de PPD sont également disponibles comme codice_8 ou codice_9. 
Mais aussi le meta-paquet codice_10 qui englobe une vingtaine de paquets de différents drivers CUPS.
Configuration côté serveur.
CUPS se configure via une interface web accessible par l'adresse http://localhost:631/ .
Fichier de configuration.
Le 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.
Interface(s) graphiques.
Des outils d'interface graphique permettant d'accéder au système CUPS existent :
Interface web.
Comme 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.
Les 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.
Ces commandes sont fournies par le paquet cupsys-bsd installé précédement.
 $ 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
 $ 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
Pour voir la file d'attente d'une imprimante en particulier :
 $ lpq -P nom_imprimante
 $ lprm num_job 
Pour supprimer toute la file d'attente (cette action n'est permise que pour le compte root) :
 # lprm -a
 $ lpstat -s
Supervision.
La supervision s'intéresse au suivi du bon fonctionnement et à la détection (et correction!) des problèmes.
Logs.
Le 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
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

Le système d'exploitation GNU-Linux/Le serveur de mails Postfix