Les postes clients sont de plusieurs types : Windows 2000/XP/Vista, Linux (Ubuntu dans plusieurs versions).
La machine "serveur" utilisée pour ce test est un Dell Optiplex GX150 recyclé.
Configuration
Configuration sur base d'Ubuntu Server 10.04 avec choix de Printserver, quelques paquets supplémentaires : ocsinventory-agent (pour l'inventaire du parc), openssh-server (pour l'accès à distance).
Une adresse IP fixe est déterminée, dans mon cas via une réservation dans le DHCP, le serveur CUPS est accessible via : http://192.168.1.61:631 (avec https pour l'administrer). Toutes les imprimantes seront partagées, l'administration à distance autorisée.
Une règle est par contre importante dans mon cas, les jobs d'impression, y compris leur titre, doivent rester confidentiels, le fichier de configuration de CUPS est proposé à la fin de cet article.
Les imprimantes s'installent sans souci particulier, les fichiers PPD sont disponibles sur les sites des fabricants, ou inclus dans les drivers Windows/Mac.
Sur une machine Windows, vous installez une imprimante réseau dont l'adresse est : http://192.168.1.61:631/printers/Xerox5655_accueil (par exemple). Sur Ubuntu, il suffit de connecter le serveur CUPS local au serveur CUPS distant.
VLAN
Le serveur est relié à une porte de switch correctement configurée, dans mon cas : configuration en vlan 1 untagged et vlan 2 tagged.
Installation du package vlan :
sudo apt-get install vlan
Ajouter la ligne 8021q au fichier /etc/modules
Modifier le fichier /etc/network/interfaces :
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0 vlan2
iface eth0 inet dhcp
# VLAN 2 - public
iface vlan2 inet static
address 192.168.2.61
netmask 255.255.255.0
vlan_raw_device eth0
Redémarrer l'interface réseau :
sudo /etc/init.d/networking restart
OK, CUPS répond aussi sur http://192.168.2.61:631
Le test d'impression depuis le vlan 2 se passe sans souci.
Confidentialité
Je ne souhaite pas que les utilisateurs aient accès aux titres des jobs, ni via l'onglet Jobs, nia via Printers, ni via les boutons de la page Administration.
Modifier le /etc/cups/cupsd.conf
Ajouter Get-Jobs à la clause :
<Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices Get-Jobs>
AuthType Default
Require user @SYSTEM
Order deny,allow
</Limit>
Quelques références :
http://www.cups.org/documentation.php/ref-cupsd-conf.html
http://www.cups.org/documentation.php/policies.html
Personnalisation de CUPS
CUPS permet égalemment de définir des "classes", une classe est une collection d'imprimantes et comme le dit la documentation : Jobs sent to a class are forwarded to the first available printer in the class.
Personnaliser la page d'accueil de CUPS en modifiant : /usr/share/cups/doc-root/index.html
Modification de la rotation des logs, via /etc/logrotate.d/cups : changer daily en monthly.
Statistiques
La génération des statistiques sera installée sur une autre machine (dans mon cas), un serveur LAMP classique (adresse http://192.168.1.72).
Installation de :
Pour ce dernier, adaptation de /var/www/phpPrintAnalyzer/inc/config.inc.php pour connecter le CUPS distant et de index.php (petit bug sur les colonnes), en remplaçant : $tabLigneTmp[1] par $tabLigneTmp[2]
Modifier le /etc/cups/cupsd.conf pour n'autoriser que ce serveur à accéder aux logs :
<Location /admin/log>
Order allow,deny
Allow from 192.168.1.72
</Location>
Les statistiques sont en erreur quand un utilisateur (ici salle lecture2) contient un espace.
Ma correction, dans index.php :
// laurent : bug si le nom de user contient un espace, correction :
$evalue_user = $tabLigneTmp[3];
$premier = $evalue_user{0};
if ($premier!="[")
{
// user avec espace
$indice_user=4;
$userTmp = strtolower($tabLigneTmp[2]);
$userTmp = $userTmp." ".strtolower($tabLigneTmp[3]);
} else {
// user sans espace
$indice_user=3;
$userTmp = strtolower($tabLigneTmp[2]);
}
Ensuite dans le code, remplacer $tabLigneTmp[2] par $userTmp.