Page suivantePage pr�c�denteTable des mati�res

12. L'impression � distance

Une des caract�ristiques de lpd est qu'il supporte l'impression sur des imprimantes rattach�es � d'autres machines que la v�tre. Avec, en plus, une combinaison de filtres soign�e, vous aurez un syst�me d'impression transparent, r�parti et performant.

12.1 Vers un h�te Unix/lpd

Pour que des machines distantes puissent utiliser l'imprimante attach�e � votre machine, le nom de ces machines doit �tre r�f�renc� soit dans le fichier /etc/hosts.lpd, soit dans le fichier /etc/hosts.equiv. Ce sont des fichiers textes normaux, dans lesquels on indique un nom de machine par ligne.

Il est pr�f�rable de d�clarer les machines dans /etc/hosts.lpd qui est sp�cialement r�serv� � l'impression, le fichier /etc/hosts.equiv donnant des droits plus �tendus.

Vous pouvez restreindre les droits d'acc�s distants par groupe ou par utilisateur. Les groupes autoris�s sont indiqu�s gr�ce au param�tre :rg=: du fichier printcap: rg=admin restreint l'utilisation aux utilisateurs du groupe admin. Le param�tre bool�en :rs=: du m�me fichier restreint l'acc�s aux utilisateurs ayant un compte sur votre machine.

Avec lpd

Pour imprimer vers une autre machine, vous devez cr�er une entr�e printcap telle que:

 # REMOTE djet500
 lp|dj|deskjet:\
 :sd=/var/spool/lpd/dj:\
 :rm=machine.out.there.com:\
 :rp=printername:\
 :lp=/dev/null:\
 :sh:

Vous noterez qu'il doit bien exister un r�pertoire de spool local g�r� par votre lpd local. Les fichiers soumis y seront copi�s puis envoy�s vers la machine distante.

Avec rlpr

Vous pouvez utiliser rlpr pour soumettre une impression directement � la machine distante sans passer par un d�mon local et toute sa configuration. C'est particuli�rement int�ressant lorsque vous imprimer rarement et vers diff�rentes imprimantes.

rlpr s'appuie sur TCP/IP. Il n'est pas n�cessaires que les imprimantes soient connues explicitement. N'ayant pas besoin de fichier printcap, il est plus facile � g�rer. Il est compatible avec lpr.

12.2 Imprimer vers une imprimante attach�e � Windows 95, NT, LanManager ou Samba.

Il existe un mini-document (Printing to Windows HOWTO) qui d�crit ceci tr�s bien.

Il est possible de rediriger une file lpd vers un service d'impression SMB gr�ce au programme smbclient (http://www.picante.com/~gtaylor/pht/man/smbclient.html). Samba contient un script (smbprint) qui fait cela. Vous devez mettre un fichier de configuration pour l'imprimante en question dans le r�pertoire de spool et d�crire le programme smbprint en tant que filtre dans /etc/printcap:

 lp|remote-smbprinter:\
 :lp=/dev/null:sh:\
 :sd=/var/spool/lpd/lp:\
 :if=/usr/local/sbin/smbprint:

Vous pouvez �galement utiliser le programme smbclient pour soumettre un fichier directement � un service d'impression SMB sans impliquer lpd. Lisez la documentation de tous ces programmes pour plus d'information.

12.3 Vers une imprimante NetWare

La suite logicielle ncpfs contient un utilitaire appel� nprint qui fournit les m�mes fonctionnalit�s que smbprint pour NetWare. Vous pouvez l'obtenir sur ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/. Avec ncpfs vous pouvez monter des volumes du serveur NetWare sous Linux. Vous pouvez �galement soumettre des travaux d'impression vers NetWare ou mettre des travaux d'impression de NetWare en file sur votre syst�me Linux. Vous devez disposer d'un noyaux 1.2.x ou 1.3.54 et ult�rieur. ncpfs NE fonctionne PAS avec un noyau 1.3.x (x < 54).

Pour que nprint fonctionne via lpd, vous devez �crire un shell-script pour diriger stdin sur l'imprimante NetWare. Vous l'installerez comme un filtre (if) d'une file d'impression lpd. Vous obtiendrez :

sub2|remote-NWprinter:\
 :lp=/dev/null:sh:\
 :sd=/var/spool/lpd/sub2:\
 :if=/var/spool/lpd/nprint-script:

le script nprint-script ressemble � quelque chose comme :

 #! /bin/sh
 # Essayez en premier le compte invite (guest)sans mot de passe!
 /usr/local/bin/nprint -S net -U name -P passwd -q printq-name -

12.4 Vers une imprimante EtherTalk

Le paquetage logiciel netatalk contient l'�quivalent de nprint et smbclient. R�f�rez-vous au Netatalk-HOWTO dans lequel est bien d�crite la proc�dure d'impression vers et depuis un r�seau Apple.

12.5 Vers une imprimante HP ou autre imprimante Ethernet

Certaines imprimantes (HP et autres) sont fournies avec une interface Ethernet que vous pouvez directement adresser pour soumettre vos travaux d'impression. Conformez-vous au manuel du constructeur. En g�n�ral, ces imprimantes font ``tourner'' un lpd et fournissent une ou plusieurs files vers lesquelles vous pouvez imprimer. Une imprimante HP, par exemple, pourra fonctionner avec une entr�e printcap telle que:

lj-5|remote-hplj:\
 :lp=/dev/null:sh:\
 :sd=/var/spool/lpd/lj-5:\
 :rm=printer.name.com:rp=raw:

Les imprimantes LaserJet HP avec une interface JetDirect ont en g�n�ral deux files incorpor�es; l'une ``raw'' accepte le PCL (et peut-�tre le PostScript), l'autre ``text'' accepte l'ascii pur (et s'arrange pour r�soudre d'elle-m�me les probl�mes d'effets d'escalier).

Dans un environnement dans lequel plusieurs imprimantes ne supportent pas le PostScript, il peut �tre bon de configurer un serveur d'impression d�di� vers lequel toutes les machines enverront leurs travaux et sur lequel GhostScript tournera.

12.6 Vers d'anciennes HP

Certaines anciennes imprimantes HP ne supportent qu'un protocole mal foutu s'appuyant sur des connexions TCP, notamment les premi�rs mod�les � base de cartes JetDirect (et quelques JetDirectEx). Pour imprimer vers de telles imprimantes, vous devez ouvrir une connexion TCP vers un port d�di� (9100) et envoyer votre impression vers cette connexion. Voici le script Perl correspondant :

 #!/usr/bin/perl
 # Thanks to Dan McLaughlin for writing the original version of this
 # script (And to Jim W. Jones for sitting next to Dan when writing me
 # for help ;)
 $fileName = @ARGV[0];
 open(IN,"$fileName") || die "Can't open file $fileName";
 $dpi300     = "\x1B*t300R";
 $dosCr      = "\x1B&k3G";
 $ends = "\x0A";
 $port =  9100 unless $port;
 $them = "bach.sr.hp.com" unless $them;
 $AF_INET = 2;
 $SOCK_STREAM = 1;
 $SIG{'INT'} = 'dokill';
 $sockaddr = 'S n a4 x8';
 chop($hostname = `hostname`);
 ($name,$aliases,$proto) = getprotobyname('tcp');
 ($name,$aliases,$port) = getservbyname($port,'tcp')
 unless $port =~ /^\d+$/;;
 ($name,$aliases,$type,$len,$thisaddr) =
 gethostbyname($hostname);
 ($name,$aliases,$type,$len,$thataddr) = gethostbyname($them);
 $this = pack($sockaddr, $AF_INET, 0, $thisaddr);
 $that = pack($sockaddr, $AF_INET, $port, $thataddr);
 if (socket(S, $AF_INET, $SOCK_STREAM, $proto)) {
 #    print "socket ok\n";
 }
 else {
 die $!;
 }
 # Give the socket an address.
 if (bind(S, $this)) {
 #    print "bind ok\n";
 }
 else {
 die $!;
 }
 # Call up the server.
 if (connect(S,$that)) {
 #    print "connect ok\n";
 }
 else {
 die $!;
 }
 # Set socket to be command buffered.
 select(S); $| = 1; select(STDOUT);
 #    print S "@PJL ECHO Hi $hostname! $ends";
 #    print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends";
 #    print S $dpi300;
 # Avoid deadlock by forking.
 if($child = fork) {
 print S $dosCr;
 print S $TimesNewR;
 while (<IN>) {
 print S;
 }
 sleep 3;
 do dokill();
 } else {
 while(<S>) {
 print;
 }
 }
 sub dokill {
 kill 9,$child if $child;
 }

12.7 Les filtres d'entr�e pour des imprimantes distantes

Une des bizarreries de lpd est que le filtre d'entr�e (if) n'est pas ex�cut� pour des imprimantes distantes. Si vous devez absolument passer par un filtre, il vous faudra utiliser deux files, la premi�re redirigeant vers la deuxi�me. Par exemple :

 lj-5:remote-hplj:\
 :lp=/dev/null:sh:\
 :sd=/var/spool/lpd/lj-5:\
 :if=/usr/lib/lpd/filter-lj-5:
 lj-5-remote:lp=/dev/null:sh:rm=printer.name.com:\
 :rp=raw:sd=/var/spool/lpd/lj-5-raw:

et le filtre filter-lj-5 (exemple):

 #!/bin/sh
 gs <options> -q -dSAFER -sOutputFile=- - | \
 lpr -Plj-5-remote -U$5

L'option -U ne fonctionne que si lpr est lanc� en tant que d�mon. Elle positionne correctement le nom du soumissionnaire du travail dans la deuxi�me queue. Il serait d'ailleurs mieux d'utiliser une m�thode plus s�re pour r�cup�rer ce nom car ce n'est pas toujours le 5�me param�tre.

12.8 Imprimer depuis Windows

L'impression depuis un client Windows vers un serveur Unix est directement support� par SMB en utilisant le paquetage SAMBA (qui supporte �galement le partage de fichiers du syst�me de fichiers Linux vers les clients Windows).

Samba est fourni avec une documentation compl�te. Vous pouvez soit installer un filtre magique sur Linux et imprimer du PostScript soit installer un pilote d'imprimante sp�cifique sous Windows et d�crire une file sans filtre. En s'appuyant sur les pilotes Windows, vous pourrez obtenir de meilleurs r�sultats, mais c'est un peu plus compliqu� � administrer si vous avez plusieurs stations sous Windows. Donc essayez d'abord la premi�re solution.

12.9 Depuis Netware

Il y a des services NetWare disponibles pour Linux, mais je n'ai aucune id�e si vous pouvez offrir des services d'impression depuis des client Netware. Des informations sont les bienvenues.

12.10 Depuis un Apple

Netatalk permet d'imprimer depuis une station Apple sur EtherTalk. Voir le Netatalk HOWTO (http://thehamptons.com/anders/netatalk) pour de plus amples renseignements.

12.11 Imprimer vers un fax

Utiliser un modem/fax

Si vous disposez d'un modem/fax, vous pouvez configurer votre syst�me pour envoyer ou recevoir des fax aux formats PostScript, dvi, ascii, etc... Vous pourrez m�me faire en sorte que votre courrier �lectronique soit fax�!

Les modems/Fax supportent les commandes de classe 1 ou 2. Les modems de classe 1 ont un sous-ensemble de fonctionnalit�s d'un fax disons traditionnel (donc, le logiciel doit faire le reste... et le co�t de traitement est parfois critique!)

La classe 1 correspond au standard EIA 578. Les modems de classe 2 r�pondent au sandard EIA 592. Vous trouverez dans la documentation de votre modem � quelle classe il appartient. Ne confondez pas classe et groupe. Le groupe est g�n�ralement le groupe III.

Les logiciels de fax tournant sous Linux doivent savoir convertir les donn�es re�ues en un format compatible avec le groupe III pour la transmission. Comme d'habitude Ghostscript sait faire ! Le pilote tiffg3 g�n�re des messages fax encod�s au format g3/tiff. Vous devrez compiler et int�grer le pilote si ce n'est d�j� fait.

Un des logiciels les plus complets sur le sujet, HylaFax est disponible sur :

 ftp.sgi.com:/sgi/fax/?????.src.tar.Z

Il supporte toutes sortes de choses comme les multiples modems et la diffusion.

mgetty + sendfax est un couple de logiciels, contenant un getty pour Linux et les modems fax ainsi qu'un logiciel d'envoi de fax assez simple. Ce paquetage se trouve �:

 sunsite.unc.edu:/pub/Linux/system/serial/getty/mgetty+sendfax-1.0.0.tar.gz

Enfin, efax m�rite d'�tre mentionn�. C'est un excellent choix pour Linux. Il supporte les classes 1 et 2.

 sunsite.unc.edu:/pub/Linux/apps/serialcomm/fax/efax08a.tar.gz

(R�pertoire dans lequel on trouvera �galement vfax10.tar.z, qfax1.3.tar.gz, xfax.v1.07s.tar.gz)

Utiliser le service d'impression distant

C'est un service exp�rimental vous permettant d'envoyer un courrier �lectronique que vous souhaitez imprimer sur un fax distant. Des formats tels que PostScript sont support�s. Bien que la couverture g�ographique de ce service soit tr�s faible, il est tr�s prometteur. Pour plus d'information, r�f�rez-vous au site Web ``Remote Printing WWW Site'' (http://www.tpc.int/).


Page suivantePage pr�c�denteTable des mati�res

Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:43