(Courriels de diversion: <bornant@evacuer-cailleront.com> <regneriez@remblayes-populariserions.com> <endormantes@malin-hivernal.com> <manigance@puisees-quantitatives.com> <poiriers@feuillette-gazouillement.com> <concepts@departirais-sous-station.com> <fauches@provocante-perequations.com> <caillait@embraiera-sous-commissions.com> <numerote@reservait-heleras.com> <aveulies@fumets-pions.com> )
>>>>> "jn" == jnicole@voila fr <jnicole@voila.fr> writes: jn> je recherche pour un exposé les différents moyens de mettre des jn> quotas d'impression sur une imprimantes en réseau. ça parait simple comme besoin, mais les quotas d'impression sont difficiles à implanter. Premièrement, la plupart des imprimantes en réseau parlent le protocole LPD, donc un utilisateur qui souhaite outrepasser les quotas pourrait soumettre des jobs directement à l'imprimante plutôt que de passer par le spooler. (Souvent les imprimantes parlent mal LPD; par exemple elles n'implémentent pas les commandes permettant d'annuler des jobs d'impression). Ensuite vient le problème de compter le nombre de pages qu'a imprimer un utilisateur. Il est facile de compter le nombre de jobs qu'il a soumis -- avec un lpd classique il suffit d'utiliser l'entrée 'if' dans /etc/printcap, puis faire appel à pac(8) -- mais ça ne sert pas à grand chose si on souhaite différencier le coût d'impression d'un livre de celui d'une seule feuille. Dans le monde Windows, une application qui souhaite imprimer fait des affichages dans une fenêtre spéciale, et le driver d'impression transforme ces commandes dans le langage de l'imprimante qu'il pilote. Dans le monde Unix c'est plus basique: une application envoie un fichier texte au spooler, qui généralement le balance directement à l'imprimante, qui sait traiter du texte ou du Postscript. Au niveau du spooleur, on peut facilement calculer le nombre de pages qu'utilisera un job au format texte, mais pour du Postscript c'est une autre histoire. Postscript est un langage de programmation, et on ne peut pas déterminer statiquement combien de pages générera un job (équivalent au problème d'arrêt d'une machine de Turing). Une solution possible est d'utiliser un filtre if qui lance ghostscript sur le fichier en lui demandant de calculer le nombre de pages, un truc comme ,---- | #!/bin/sh | # | # pagecount [postscript_file...] | ( | cat $* | echo "currentdevice /PageCount gsgetdeviceprop == flush" | ) | gs -q -sDEVICE=bit -sOutputFile=/dev/null - `---- C'est assez couteux en CPU, et un utilisateur astucieux peut contourner le comptage en redéfinissant l'opérateur Postscript /PageCount. Une seconde solution est d'utiliser les moyens d'accounting intégrés à la plupart des imprimantes haut de gamme, auxquelles on accède par SNMP ou par des protocoles propriétaires. <URL:http://www.cups.org/> <URL:http://www.linuxprinting.org/> -- Eric Marsden <URL:http://www.laas.fr/~emarsden/> --------------------------------------------------------------------- Aide sur la liste: <URL:mailto:linux-31-help@savage.iut-blagnac.fr>Le CULTe sur le web: <URL:http://www.CULTe.org/>