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.
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.
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.
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
.
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.
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 -
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.
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.
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;
}
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.
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.
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.
Netatalk permet d'imprimer depuis une station Apple sur EtherTalk. Voir le
Netatalk HOWTO
(http://thehamptons.com/anders/netatalk
)
pour de plus amples renseignements.
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
)
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/
).
Hosting by: Hurra Communications GmbH
Generated: 2007-01-26 18:01:43