Sophie

Sophie

distrib > Mandriva > 9.0 > i586 > by-pkgid > 0d5cd12c82d627a82c59047e1ba7b8a9 > files > 1112

howto-html-fr-9.0-0.2mdk.noarch.rpm

<HTML>
<HEAD>
<TITLE>L'impression &agrave; distance</TITLE>
</HEAD>
<BODY>
<H1>12. <A NAME="s12"></A>L'impression &agrave; distance</H1>
<P>
<A HREF="Printing-HOWTO.html#toc12">Contenu de cette section</A></P>

<P></P>
<P>Une des caract&eacute;ristiques de <CODE>lpd</CODE> est qu'il supporte l'impression
sur des  imprimantes  rattach&eacute;es &agrave;  d'autres  machines que la
v&ocirc;tre.   Avec, en  plus,  une combinaison  de filtres soign&eacute;e,
vous aurez     un syst&egrave;me   d'impression  transparent,    r&eacute;parti et
performant.</P>
<P></P>
<H2>12.1 <A NAME="ss12.1"></A> Vers un h&ocirc;te Unix/lpd</H2>

<P></P>
<P>Pour  que    des  machines  distantes    puissent utiliser     l'imprimante
attach&eacute;e &agrave;   votre machine, le   nom   de ces  machines  doit
&ecirc;tre  r&eacute;f&eacute;renc&eacute;      soit  dans    le    fichier
<CODE>/etc/hosts.lpd</CODE>, soit   dans le fichier  <CODE>/etc/hosts.equiv</CODE>.
Ce sont  des fichiers textes  normaux, dans lesquels on  indique un  nom de
machine par ligne.</P>
<P></P>
<P></P>
<P>Il  est  pr&eacute;f&eacute;rable  de  d&eacute;clarer les   machines  dans
<CODE>/etc/hosts.lpd</CODE>   qui est sp&eacute;cialement r&eacute;serv&eacute;
&agrave; l'impression,  le   fichier <CODE>/etc/hosts.equiv</CODE>  donnant des
droits plus &eacute;tendus.</P>
<P></P>
<P></P>
<P>Vous  pouvez restreindre les droits  d'acc&egrave;s distants  par groupe ou
par utilisateur.   Les    groupes  autoris&eacute;s sont    indiqu&eacute;s
gr&acirc;ce     au       param&egrave;tre   <CODE>:rg=:</CODE>     du   fichier
<CODE>printcap</CODE>: <CODE>rg=admin</CODE> restreint     l'utilisation        aux
utilisateurs  du groupe   <CODE>admin</CODE>.  Le   param&egrave;tre bool&eacute;en
<CODE>:rs=:</CODE>  du  m&ecirc;me    fichier   restreint   l'acc&egrave;s  aux
utilisateurs ayant un compte sur votre machine.</P>
<P></P>
<H3>Avec lpd</H3>

<P></P>
<P>Pour  imprimer vers  une  autre   machine,  vous  devez  cr&eacute;er   une
entr&eacute;e <CODE>printcap</CODE> telle que:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     # REMOTE djet500
     lp|dj|deskjet:\
             :sd=/var/spool/lpd/dj:\
             :rm=machine.out.there.com:\
             :rp=printername:\
             :lp=/dev/null:\
             :sh:
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Vous noterez qu'il doit  bien exister un  r&eacute;pertoire de spool  local
g&eacute;r&eacute;  par votre <CODE>lpd</CODE>  local. Les fichiers soumis y seront
copi&eacute;s puis envoy&eacute;s vers la machine distante.</P>
<P></P>
<H3>Avec rlpr</H3>

<P></P>
<P>Vous pouvez utiliser  <CODE>rlpr</CODE>  pour soumettre une  impression directement
&agrave; la machine distante sans passer par un d&eacute;mon local et toute
sa configuration.  C'est particuli&egrave;rement int&eacute;ressant lorsque
vous imprimer rarement et vers diff&eacute;rentes imprimantes.</P>
<P></P>
<P></P>
<P><CODE>rlpr</CODE> s'appuie sur TCP/IP.  Il n'est pas n&eacute;cessaires que les
imprimantes soient connues   explicitement.  N'ayant pas besoin de  fichier
printcap, il est plus facile &agrave; g&eacute;rer.  Il est compatible avec
<CODE>lpr</CODE>.</P>
<P></P>

<H2>12.2 <A NAME="ss12.2"></A> Imprimer vers  une  imprimante  attach&eacute;e &agrave;   Windows  95, NT,LanManager ou Samba.</H2>

<P></P>
<P>Il  existe un   mini-document  (<CODE>Printing  to  Windows  HOWTO</CODE>)  qui
d&eacute;crit ceci tr&egrave;s bien.</P>
<P></P>
<P></P>
<P>Il est possible de rediriger une file <CODE>lpd</CODE> vers un service d'impression
SMB      gr&acirc;ce          au          programme          <CODE>smbclient</CODE>
(<CODE>http://www.picante.com/~gtaylor/pht/man/smbclient.html</CODE>).    Samba
contient un script (<CODE>smbprint</CODE>) qui fait cela.  Vous devez mettre un
fichier  de   configuration   pour  l'imprimante   en  question   dans   le
r&eacute;pertoire de spool  et d&eacute;crire le programme <CODE>smbprint</CODE> en
tant que filtre dans <CODE>/etc/printcap</CODE>:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     lp|remote-smbprinter:\
         :lp=/dev/null:sh:\
         :sd=/var/spool/lpd/lp:\
         :if=/usr/local/sbin/smbprint:
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Vous   pouvez &eacute;galement utiliser    le programme <CODE>smbclient</CODE> pour
soumettre un fichier directement &agrave; un  service d'impression SMB sans
impliquer <CODE>lpd</CODE>.  Lisez la documentation de tous ces programmes pour
plus d'information.</P>
<P></P>

<H2>12.3 <A NAME="ss12.3"></A> Vers une imprimante NetWare</H2>

<P></P>
<P>La suite     logicielle <CODE>ncpfs</CODE>  contient    un utilitaire appel&eacute;
<CODE>nprint</CODE> qui fournit les m&ecirc;mes fonctionnalit&eacute;s que smbprint
pour    NetWare.            Vous        pouvez       l'obtenir          sur
<CODE>ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/</CODE>.    Avec
<CODE>ncpfs</CODE> vous pouvez  monter  des volumes   du serveur NetWare   sous
Linux.   Vous  pouvez &eacute;galement  soumettre  des travaux d'impression
vers  NetWare ou mettre  des  travaux d'impression  de  NetWare en file sur
votre syst&egrave;me Linux.    Vous devez disposer   d'un  noyaux 1.2.x  ou
1.3.54   et ult&eacute;rieur.   <CODE>ncpfs</CODE> <B>NE</B> fonctionne  <B>PAS</B>
avec un noyau 1.3.x (x &lt; 54).</P>
<P></P>
<P></P>
<P>Pour que  <CODE>nprint</CODE> fonctionne via <CODE>lpd</CODE>,  vous devez &eacute;crire un
shell-script    pour   diriger  stdin   sur    l'imprimante  NetWare.  Vous
l'installerez comme  un   filtre  (<CODE>if</CODE>)  d'une file    d'impression
<CODE>lpd</CODE>. Vous obtiendrez :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
sub2|remote-NWprinter:\
             :lp=/dev/null:sh:\
             :sd=/var/spool/lpd/sub2:\
             :if=/var/spool/lpd/nprint-script:
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>le script <CODE>nprint-script</CODE> ressemble &agrave; quelque chose comme :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     #! /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 -
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>12.4 <A NAME="ss12.4"></A> Vers une imprimante EtherTalk</H2>

<P></P>
<P>Le     paquetage  logiciel <CODE>netatalk</CODE>    contient l'&eacute;quivalent de
<CODE>nprint</CODE>   et    <CODE>smbclient</CODE>.       R&eacute;f&eacute;rez-vous     au
<CODE>Netatalk-HOWTO</CODE>  dans   lequel      est  bien   d&eacute;crite   la
proc&eacute;dure d'impression vers et depuis un r&eacute;seau <I>Apple</I>.</P>
<P></P>

<H2>12.5 <A NAME="ss12.5"></A> Vers une imprimante HP ou autre imprimante Ethernet</H2>

<P></P>
<P>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&eacute;n&eacute;ral,  ces imprimantes  font ``tourner''  un  <CODE>lpd</CODE>  et
fournissent une ou  plusieurs files vers  lesquelles vous  pouvez imprimer.
Une imprimante  HP, par exemple, pourra  fonctionner avec une entr&eacute;e
<CODE>printcap</CODE> telle que:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
lj-5|remote-hplj:\
             :lp=/dev/null:sh:\
             :sd=/var/spool/lpd/lj-5:\
             :rm=printer.name.com:rp=raw:
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Les    imprimantes LaserJet   HP avec  une   interface   JetDirect  ont  en
g&eacute;n&eacute;ral deux files  incorpor&eacute;es; l'une ``raw'' accepte
le PCL (et peut-&ecirc;tre le PostScript), l'autre ``text'' accepte l'ascii
pur   (et    s'arrange     pour  r&eacute;soudre    d'elle-m&ecirc;me   les
probl&egrave;mes d'effets d'escalier).</P>
<P></P>
<P></P>
<P>Dans un environnement dans  lequel plusieurs imprimantes ne  supportent pas
le  <I>PostScript</I>,  il  peut &ecirc;tre   bon  de configurer  un  serveur
d'impression d&eacute;di&eacute; vers lequel  toutes les machines enverront
leurs travaux et sur lequel GhostScript tournera.</P>
<P></P>

<H2>12.6 <A NAME="ss12.6"></A> Vers d'anciennes HP</H2>

<P></P>
<P>Certaines anciennes imprimantes HP ne  supportent qu'un protocole mal foutu
s'appuyant sur   des   connexions    TCP, notamment   les   premi&egrave;rs
mod&egrave;les &agrave; base de cartes JetDirect (et quelques JetDirectEx).
Pour  imprimer vers de telles  imprimantes, vous devez ouvrir une connexion
TCP  vers  un port d&eacute;di&eacute;  (9100)  et envoyer votre impression
vers cette connexion. Voici le script Perl correspondant :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     #!/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,&quot;$fileName&quot;) || die &quot;Can't open file $fileName&quot;;

     $dpi300     = &quot;\x1B*t300R&quot;;
     $dosCr      = &quot;\x1B&amp;amp;k3G&quot;;
     $ends = &quot;\x0A&quot;;

     $port =  9100 unless $port;
     $them = &quot;bach.sr.hp.com&quot; 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 &quot;socket ok\n&quot;;
     }
     else {
         die $!;
     }
     # Give the socket an address.
     if (bind(S, $this)) {
     #    print &quot;bind ok\n&quot;;
     }
     else {
         die $!;
     }

     # Call up the server.

     if (connect(S,$that)) {
     #    print &quot;connect ok\n&quot;;
     }
     else {
         die $!;
     }

     # Set socket to be command buffered.

     select(S); $| = 1; select(STDOUT);

     #    print S &quot;@PJL ECHO Hi $hostname! $ends&quot;;
     #    print S &quot;@PJL OPMSG DISPLAY=\&quot;Job $whoami\&quot; $ends&quot;;
     #    print S $dpi300;

     # Avoid deadlock by forking.

     if($child = fork) {
         print S $dosCr;
         print S $TimesNewR;

         while (&lt;IN&gt;) {
             print S;
         }
         sleep 3;
         do dokill();
     } else {
         while(&lt;S&gt;) {
             print;
         }
     }

     sub dokill {
         kill 9,$child if $child;
     }
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P></P>

<H2>12.7 <A NAME="ss12.7"></A> Les filtres d'entr&eacute;e pour des imprimantes distantes</H2>

<P></P>
<P>Une des  bizarreries  de   <CODE>lpd</CODE>  est  que le   filtre   d'entr&eacute;e
(<CODE>if</CODE>)   n'est pas    ex&eacute;cut&eacute;   pour des   imprimantes
distantes. Si vous  devez absolument passer par un  filtre,  il vous faudra
utiliser   deux  files,   la    premi&egrave;re    redirigeant  vers     la
deuxi&egrave;me. Par exemple :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     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:
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>et le filtre <CODE>filter-lj-5</CODE> (exemple): </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     #!/bin/sh
     gs &lt;options&gt; -q -dSAFER -sOutputFile=- - | \
             lpr -Plj-5-remote -U$5
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>L'option <CODE>-U</CODE> ne fonctionne que si  <CODE>lpr</CODE> est lanc&eacute; en
tant  que  d&eacute;mon.    Elle   positionne  correctement   le   nom   du
soumissionnaire du  travail   dans  la deuxi&egrave;me  queue.    Il serait
d'ailleurs mieux  d'utiliser   une  m&eacute;thode  plus  s&ucirc;re   pour
r&eacute;cup&eacute;rer ce  nom car  ce  n'est pas toujours  le 5&egrave;me
param&egrave;tre.</P>
<P></P>

<H2>12.8 <A NAME="ss12.8"></A> Imprimer depuis Windows</H2>

<P></P>
<P>L'impression depuis un client Windows vers un  serveur Unix est directement
support&eacute;  par <CODE>SMB</CODE> en  utilisant le paquetage <CODE>SAMBA</CODE>
(qui supporte &eacute;galement le partage  de fichiers du syst&egrave;me de
fichiers Linux vers les clients Windows).</P>
<P></P>
<P></P>
<P>Samba est fourni avec une documentation  compl&egrave;te.  Vous pouvez soit
installer un  filtre magique sur Linux et  imprimer du <I>PostScript</I> soit
installer un pilote     d'imprimante  sp&eacute;cifique sous    Windows  et
d&eacute;crire une  file sans   filtre.    En s'appuyant sur   les  pilotes
Windows, vous pourrez obtenir de meilleurs  r&eacute;sultats, mais c'est un
peu plus compliqu&eacute;  &agrave; administrer si   vous avez plusieurs  stations
sous Windows.  Donc essayez d'abord la premi&egrave;re solution.</P>
<P></P>

<H2>12.9 <A NAME="ss12.9"></A> Depuis Netware</H2>

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

<H2>12.10 <A NAME="ss12.10"></A> Depuis un Apple</H2>

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

<H2>12.11 <A NAME="ss12.11"></A> Imprimer vers un fax</H2>

<P></P>
<P></P>
<H3>Utiliser un modem/fax</H3>

<P></P>
<P>Si    vous disposez   d'un   modem/fax,  vous    pouvez  configurer   votre
syst&egrave;me   pour    envoyer  ou  recevoir    des    fax   aux  formats
<I>PostScript</I>, dvi, ascii, etc...  Vous pourrez m&ecirc;me faire en sorte
que votre courrier &eacute;lectronique soit fax&eacute;!</P>
<P></P>
<P></P>
<P>Les  modems/Fax supportent les commandes  de classe 1  ou 2.  Les modems de
classe  1 ont un  sous-ensemble  de fonctionnalit&eacute;s d'un fax  disons
traditionnel (donc, le logiciel doit faire le reste...  et le co&ucirc;t de
traitement est parfois critique!)</P>
<P></P>
<P></P>
<P>La classe 1  correspond   au standard  EIA  578.  Les  modems de  classe  2
r&eacute;pondent  au sandard EIA  592. Vous trouverez dans la documentation
de votre  modem &agrave;  quelle  classe  il appartient. Ne  confondez  pas
classe et groupe. Le  groupe est g&eacute;n&eacute;ralement le groupe  III.</P>
<P></P>
<P></P>
<P></P>
<P>Les logiciels de  fax  tournant sous  Linux  doivent savoir  convertir  les
donn&eacute;es re&ccedil;ues  en  un format  compatible  avec le groupe III
pour la  transmission.  Comme d'habitude <I>Ghostscript</I>   sait faire ! Le
pilote <CODE>tiffg3</CODE> g&eacute;n&egrave;re des  messages fax encod&eacute;s au
format <CODE>g3/tiff</CODE>. Vous devrez  compiler et int&eacute;grer le pilote
si ce n'est d&eacute;j&agrave; fait.</P>
<P></P>
<P></P>
<P>Un des logiciels    les plus complets    sur  le sujet,   <CODE>HylaFax</CODE>  est
disponible sur :</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     ftp.sgi.com:/sgi/fax/?????.src.tar.Z
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Il  supporte toutes  sortes de  choses comme  les  multiples  modems et  la
diffusion.</P>
<P></P>
<P><CODE>mgetty    + sendfax</CODE>  est un    couple  de logiciels, contenant  un
<CODE>getty</CODE> pour Linux et les modems fax ainsi qu'un logiciel d'envoi de fax
assez simple.  Ce paquetage se trouve &agrave;:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     sunsite.unc.edu:/pub/Linux/system/serial/getty/mgetty+sendfax-1.0.0.tar.gz
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Enfin, <CODE>efax</CODE> m&eacute;rite   d'&ecirc;tre mentionn&eacute;.   C'est  un
excellent choix pour Linux. Il supporte les classes 1 et 2.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
     sunsite.unc.edu:/pub/Linux/apps/serialcomm/fax/efax08a.tar.gz
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>(R&eacute;pertoire    dans     lequel    on      trouvera  &eacute;galement
<CODE>vfax10.tar.z</CODE>,                             <CODE>qfax1.3.tar.gz</CODE>,
<CODE>xfax.v1.07s.tar.gz</CODE>)</P>
<P></P>
<H3>Utiliser le service d'impression distant</H3>

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

<HR>
<P>
Chapitre <A HREF="Printing-HOWTO-13.html">suivant</A>,
Chapitre <A HREF="Printing-HOWTO-11.html">Pr&eacute;c&eacute;dent</A>
<P>
Table des mati&egrave;res de <A HREF="Printing-HOWTO.html#toc12">ce chapitre</A>,
 <A HREF="Printing-HOWTO.html#toc">Table des mati&egrave;res</A> g&eacute;n&eacute;rale</P>
<P>
<A HREF="Printing-HOWTO.html">D&eacute;but</A> du document,
 <A HREF="#0"> D&eacute;but de ce chapitre</A></P>
</BODY>
</HTML>