Par Bob Sparks Bobnhlinux@aol.com
Nous avons un vieux système Bull Honeywell sous Unix. Il utilise quelques serveurs d'impression propriétaires qui ne peuvent pas être mis à jour, et coûte 10000 $ par an en entretien. Le Bull ne peut pas imprimer directement sur des serveurs HP JetDirect, NetWare, ou sur d'autres systèmes Unix. Voyons Linux.
Ce ne fut pas aussi facile que je ne l'avais pensé. Si ça l'avait été
on n'aurait pas eu besoin de Linux. La machine Bull imprime dans des
files d'impression de genre BSD. Mais elle ne voulait pas imprimer sur
Linux. D'accord, sortons tcpdump
. Par chance, en utilisant
l'option host de tcpdump
avec d2 et home (les noms de
machines Bull et Linux), ça réduit le trafic juste comme on
veut. tcpdump
voyait la machine Bull en essayant d'accéder au
port rsh (514), pas au port de l'imprimante distante (515). Cependant,
ça ne montrait pas le contenu des trames, donc on ne sait pas ce qu'il
essayait de faire. tcpdump
-w mettait les trames brutes dans
le fichier. En les regardant avec un éditeur de texte (sur une machine
Win95, SMB en partage, une autre histoire), on voyait les message
d'erreur: "/usr/ucb/lpr, no such file or directory
"
On a d'abord créé le répertoire avec :
mkdir /usr/ucb
.
Ca signifiait qu'il se présentait comme un tty, en cherchant lpr au
mauvais endroit. On avait besoin d'un mélange de tous ces
ingrédients. On a résolu une partie du problème en créant le lien
/usr/ucb/lpr -> /usr/bin/lpr
. On avait déjà regardé
/var/log/messages
et on avait vu que PAM rejetait l'hôte
distant. On a réussi à faire accepter le Bull en le déclarant dans les
fichiers /etc/hosts.lpd
et /var/spool/lpd/.rhosts
.
Je dois ajouter que beaucoup de ces réponses viennent des questions
que j'ai posées sur les groupes de discussion et les listes de
diffusion. J'ai du lire le Printing-HOWTO, le Printing-Usage-HOWTO, le
Guide de l'Administrateur Système Linux, le Guide de l'Administrateur
Réseau, les pages de manuel, à m'en rendre malade. Une des
contreparties au fait que Linux soit l'un des systèmes les plus
documentés est qu'il y a plus de documentation à lire. Je n'ai
toujours pas trouvé comment activer une comptabilité sur
l'imprimante. Il y a quelques ancrages mis en place dans les systèmes
lpd et lpr, mais je ne vois rien de déjà fonctionnel. Le
printtool
de RedHat semble utiliser le fichier
/var/spool/lpd/<nom_de_l_imprimante>/acct
dans le
fichier printcap (qui est le fichier de comptabilité), mais ils ne
semblent pas s'en servir à des fins de comptabilité. En fait, ils s'en
servent pour trouver un fichier .config
contenant les
informations sur les noms et mots de passe des utilisateurs pour les
files SMB et NetWare. Cela l'empêche d'être utilisé ailleurs que dans
le répertoire de file d'impression. Le livre d'Aeleen Frisch
"Essential System Administration", disponible chez O'Reilly, mentionne
que de nombreux systèmes utilisent /var/adm
. La hiérarchie
standard de fichiers Unix/Linux inclut les répertoires
/var/account
et /var/log
. Il ne mentionne pas
spécifiquement la comptabilité concernant les imprimantes.
Il en ressort que les serveurs d'impression HP JetDirect se comportent
comme des systèmes Unix distants. Ils ont des files d'impression, et
vous pouvez même y accéder par un protocole telnet. Telnet donne
uniquement accès à un menu de configuration, pas vraiment à un
OS. Donc, pour imprimer directement sur des imprimantes HP, on utilise
printtool
de RedHat qui nous permet de configurer chaque
imprimante comme une machine Unix distante. A présent, la machine Bull
imprime dans une file Linux, qui est définie comme étant une file
distante sur le serveur JetDirect. Ca permet à la vieille machine Bull
d'imprimer sur les imprimantes laser dispersées sur le réseau local au
lieu de se limiter aux vieilles imprimantes séries des anciens
serveurs propriétaires.
Alors qu'on était en plein milieu d'une mise en place d'autres serveurs, une ligne de communication a rendu l'âme. C'était la ligne qui menait aux serveurs propriétaires. Au lieu de nous servir de ça comme un prétexte à l'installation d'autres serveurs Linux, nous avons choisi d'être professionnels. Ca signifiait fournir une solution rapidement. Nous avons transféré une des imprimantes vitales vers le port série d'une machine faisant tourner Win95, l'avons partagé avec SMB, et avons redirigé la file Linux via smbprint. Bien sûr, seul Linux peut à la fois recevoir la file d'impression Bull et exporter une file SMB ; mais l'important était plus de fournir une solution professionnelle que de mettre en avant Linux. La rapidité de la solution fît tout de même apparaître Linux sous un bon jour. Nous avons à présent l'autorisation de mettre en place d'autres serveurs Linux. C'est dans une atmosphère de compétence professionnelle, pas de radicalisme. L'image de Linux en est redorée. Nous avons donc remplacé tout ce bazar par un serveur Linux dédié en mettant les imprimantes sur les ports série (ttySn) d'un vieux 486 destiné, à l'origine, au surplus. Les machines faisant tourner JetDirect ne s'occupent que des ports parallèle.
Dans le but de rendre ça encore plus stable, nous avons fait tourner un script sur la machine Bull qui regarde si la redirection de l'impression fonctionne. Je l'utilise parfois comme une machine de démonstration, et ces unités ne sont pas sur des prises de courant protégées des coupures. On est dans un bâtiment vieux de 160 ans. L'électricité n'est pas forcément fournie de manière stable. Cette même idée peut être appliquée aux imprimantes des serveurs JetDirect. Si une imprimante, un serveur, un câble réseau, un concentrateur, ou quoi que ce soit d'autre tombe en panne, certaines des files d'impression peuvent se rediriger vers une imprimante proche et continuer à fonctionner. Après tout, une des raisons de l'utilisation de Linux est qu'il continue de fonctionner dans les pires conditions.
#!bin/sh # script shell pour trouver quelles parties du réseau sont fonctionnelles # Il sera lancé par cron aussi souvent que nécessaire, pour root. # /etc/hosts.pup & /etc/hosts.pdown sont identiques, # sauf pour l'adresse IP de pdirector. # pprimary est le premier aiguillage d'impression. psecond est la sauvegarde. # /etc/hosts.pup a pdirector avec l'adresse IP de pprimary. # /etc/hosts.pdown a pdirector avec l'adresse de psecond. # pprimary et psecond tournent tous les deux 24H/24 7J/7, et ont des # redirections de files d'impression identiques. if { ping -c 1 pprimary >/dev/null } then cp /etc/hosts.pup /etc/hosts else cp /etc/hosts.pdown /etc/hosts fi
Copyright © 1999, Bob Sparks - Publié dans le n°40 de la Linux Gazette, Avril 1999.
Adaptation française de Xavier Serpaggi.