Lorsqu'on dispose d'un petit réseau, il peut être utile de pouvoir partager son imprimante en réseau. Même si cela est aisé sous Windows, rien ne sert d'avoir un OS aussi lourd pour gérer les imppressions. Un simple serveur avec votre UNIX préféré sera suffisant.
Cet exemple est réalisé avec des postes Windows (XP), MacOS X 10.5 et un serveur d'impression (mais aussi serveur de fichiers, etc.) FreeBSD 6.0. Bien entendu, vous pouvez prendre un serveur avec le système qui vous plaira.
L'impression fonctionne de la façon suivante:
Nous pouvons récupérer ce fichier généré par le pilote en sélectionnant l'option imprimer dans un fichier. A partir de là, si nous transférons le fichier par FTP ou TCP à une autre machine chargée d'imprimer le fichier, nous aurons le plaisir de voir l'impression demandée. Bien évidemment, il faut que le pilote qui génère le fichier corresponde au modèle de l'imprimante.
Nous comprenons donc qu'il est aisé d'obtenir un serveur d'impression car il suffit juste de récupérer le fichier généré par le pilote et de l'envoyer sur l'entrée standard de l'imprimante.
Nous comprenons donc aussi que pour une simple redirection de fichier d'impression, nous n'avons pas besoin de mettre en place une architecture lourde fondée sur SAMBA/CUPS...
Pour imprimer en réseau, il faut :
La première chose à faire est de configurer lpd. Pour cela, je vous laisse le soin de vous reporter à la mise en place technique de l'imprimante sur la machine, selon qu'elle est USB ou parallèle -l'imprimante réseau n'ayant ici aucun intérêt-.
Pour configurer lpd, il faut tout d'abord renseigner le fichier /etc/printcap. Comme l'impression ne sera qu'une simple redirection, pas besoin d'une configuration compliquée.
HP920c|lp|Imprimante HP DeskJet 920c:\
:lp=/dev/lpt0:\
:lf=/var/log/hp920c-pcl.log:\
:sd=/var/spool/lpd/HPDj920CPCL:\
:mx#0:sh:
Il ne reste plus qu'à lancer le démon lpd en tapant simplement :
lpd start
Si tout s'est bien passé, il n'y a aucun message particulier.
Nous pouvons vérifier que l'imprimante fonctionne en tapant :
lptest 20 10 | lpr
L'impression peut se faire en escalier. C'est juste un problème d'interprétation des fins de ligne. Cela peut poser problème dans le cas d'une impression de fichier texte en local. Mais dans notre cas, cela ne nous intéresse pas.
Si l'imprimante imprime, c'est que tout est OK. Sinon, vérifions le fichier de log.
Pour finir, afin que le démon se lance seul au démarrage de la machine, nous ajoutons dans le /etc/rc.conf la ligne suivante :
#Impression lpd_enable="YES"
Nous imprimons en local. Mais par sécurité, l'impression ne peut pas se faire en réseau sans y avoir été autorisée.
Pour imprimer à partir du réseau, il faut :
Normalement, à ce stade, le serveur est fin prêt à imprimer en réseau.
La première chose à faire est d'installer le service d'impression réseau UNIX. Pour cela il faut ajouter un nouveau composant Windows : Panneau de configuration/Ajouter ou supprimer des programmes/Ajouter ou supprimer des composants Windows. Cochons la case Autres services de fichiers et d'impression réseau. Le détail indique services d'impression pour UNIX. Validons. Le système demande normalement d'introduire le CD-ROM Windows. Et suivons les instructions.
Une fois le service installé, il ne reste qu'à ajouter une imprimante : Imprimantes et télécopieurs/Ajouter une nouvelle imprimante. Sélectionnons une imprimante local, non partagée. Puis sélectionnons le modèle.
A ce stage, Windows a installé un imprimante locale. D'un clic droit, nous ouvrons les propriétés. Dans l'onglet Ports, nous ajoutons un port : LPR port.
Nous renseignons l'adresse IP du serveur d'impression et le nom de l'imprimante. Comme nom, d'après notre exemple, nous pouvons choisir HP920c ou lp.
Et normalement, tout est fini. Appliquons les modifications, puis imprimons une page de test.
Pour configurer une impression réseau lpd sous MacOS X, il suffit d'aller dans les préférences systèmes/Imprimantes et fax.
L'impression dans un fichier suit le même principe. L'on peut imrimer dans un fichier sur la machine locale ou envoyer l'impression sur le serveur afin d'y être traitée.
Le principe restant le même, il suffira juste de modifier le filtre et l'imprimante. Par exemple, nous voulons imprimer dans un fichier PostScript :
ps:\
:lp=/dev/null:\
:lf=/var/log/ps.log:\
:if=/usr/local/lpd/ps.filter:\
:sd=/var/spool/lpd/ps:\
:mx#0:sh:
L'impression Postscript (ou tout autre format) envoyée au serveur est tarité directement par le filtre ps.filter, la matériel d'impression employé étant ici la poubelle (/dev/null). C'est au filtre de tariter le fichier et de l'enregistrer.
Sous UNIX,le matériel d'impression peut être n'importe quel fichier. /dev/lpt0, /dev/null ou un fichier standard. Cependant, les impressions vont se superposer dans le fichier cible, la dernière impression écrasant la précédente.
Par exemple, le script ps.filter:
#!/bin/sh #Traitement d'un fichier PostScript cat > /tmp/.print/$( date '+%Y%m%d%H%M%S').ps echo "[ $( date '+%Y%m%d%H%M%S') ] : Impression PostScript" >> /var/log/ps.log exit 0
Ici, on ne se content que de rediriger l'impression dans un fichier horodaté et d'écrire une ligne dans le fichier de log. Mais, en fonction du format de l'impression, le traitement pourra être plus complexe.
Du côté du client, il suffira de créer une nouvelle imprimante imprimant sur LPR, en choisissant pour pilote le plus adéquat, par exemple, un pilote d'imprimante PostScript pour imprimer en postscript. Sous Windows, l'imprimante Postscript standard est Générique/MS Publisher color printer.
Si malgré votre configuration, aucune impression ne se produit. Il doit y avoir un problème. Commencez par vérifier le contenu du fichier de log de lpd.
Si vous trouvez une ligne job could not be printed, c'est peut-être que le filtre utilisé ne possède pas les bons droits, donnez lui les droits ou changez le de groupe.
S'il n'y a rien de particulier, exécutez la commande lpc afin de voir ce qui se passe :
lpc> status ps
ps:
queuing is enabled
printing is enabled
no entries
no daemon present
Si vous avez le message no daemon present, c'est que cette imprimante n'est pas activée. Dans ce cas, tapez :
lpc> start ps
ps:
printing enabled
daemon started