Next Previous Contents

14. Remplacer les vieux systèmes par Linux, ou, l'histoire de deux TTY

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.

14.1 Je suis toujours un débutant

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.

14.2 Rtfm, rtfm, rtfm

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.

14.3 Quoi, accéder par telnet à une imprimante ?

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.

14.4 Une solution d'installation

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.

14.5 Et maintenant, améliorons tout ça

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.


Next Previous Contents