Page suivante Page précédente Table des matières

8. Partager une imprimante Linux pour des stations Windows

Pour partager une imprimante Linux pour des stations Windows, vous devez être sûr que votre imprimante est configurée pour fonctionner sous Linux. Si vous savez imprimer depuis Linux, la mise en place d'un partage de l'imprimante par SMB est quasi-automatique.

Veuillez vous référer au Printing HOWTO pour la configuration de l'imprimante.

Puisque l'auteur utilise une imprimante connectée à une machine sous Windows NT (Il y a bien longtemps, avant de convertir presque tout notre réseau à Linux), cette section ne doit pas être prise à la lettre, mais simplement comme une suggestion. Quiconque ayant des détails sur ce point est invité à les envoyer à dwood@plugged.net.au afin que ce chapitre puisse être complété.

Ajoutez la configuration d'impression à votre smb.conf :

[global]
   printing = bsd
   printcap name = /etc/printcap
   load printers = yes
   log file = /var/log/samba-log.%m
   lock directory = /var/lock/samba

[printers]
   comment = Toutes les imprimantes
   security = server
   path = /var/spool/lpd/lp
   browseable = no
   printable = yes
   public = yes
   writable = no
   create mode = 0700

[ljet]
   security = server
   path = /var/spool/lpd/lp
   printer name = lp
   writable = yes
   public = yes
   printable = yes
   print command = lpr -r -h -P %p %s

Assurez vous que le « path » (dans cet exemple, à l'intérieur de la section [ljet]) corresponde au répertoire de spool défini dans /etc/printcap !

Les lignes :

   printcap name = /etc/printcap
   load printers = yes

Contrôle si toutes les imprimantes du /etc/printcap doivent être chargées par défaut. Si vous faites cela, il ne sera pas nécessaire de mettre en place les imprimantes unes a unes. La section [printers] spécifie les options pour les imprimantes que vous voulez définir explicitement. Si le système d'impression que vous utilisez ne marche pas de cette manière (BSD), vous aurez a faire un faux fichier printcap (ou utiliser la technique du `print command' décrite ci dessous). Pour plus d'informations sur le système printcap, référez vous au Printing HOWTO.

Une technique utile pour tester les connexions réseau est de changer la commande print par :

   print command = cp %S /tmp/print.%P.%S

Le fichier résultant pouvant alors être analysé.

NB : On constate quelques problèmes pour le partage d'imprimante sur des serveurs Unix, utilisant Samba, pour des clients sous Windows NT. Un des problèmes est que NT ne voit pas l'imprimante partagée correctement. Pour résoudre ce problème, lisez les remarques dans le fichier docs/WinNT.txt de la distribution de Samba. Un autre problème existe avec les mots de passe. Voyez également dans ce fichier comment résoudre le problème.

Oleg L. Machulskiy ( machulsk@shade.msu.ru) suggère une meilleur commande print a mettre dans l'exemple précédent :

print command = smb2ps %s | lpr -r -h -P %p

Ou `smb2ps' est un script qui transforme le fichier reçu d'un poste Windows en un fichier postscript utilisable. Il doit enlever les 3 premières lignes ainsi que les 2 dernières, car celles ci contienent quelques codes PJL ou PCL.

Cette approche n'est nécessaire que si votre imprimante n'imprime que du PCL et non du vrai postscript. J'ai découvert que Windows 95/98/NT n'ont pas de pilote postscript générique, mais le "Digital turbo Printserver 20" est un bon pilote générique pour la majorité des installations. J'ai aussi entendu dire que le "Apple LaserWriter II NTX" marchais plutôt bien aussi.

Jeff Stern ( jstern@eclectic.ss.uci.edu) a rapporté ce qui suit et qui pourrais intéresser certains d'entre vous :

--------------------------%<----------------------------------

Le probleme que j'avais etais que je pouvais imprimer avec lpd/lpr sur mon imprimante sous Linux, depui la machine elle meme. Mais je n'arrivais pas a la faire imprimer depuis une machine Win95, quand j'essayais :

        smbclient \\eclectic\belen -P

Puis, j'ai essayé :

        print mon_fichier

J'ai eu des erreurs a propos d'un accès non autorisé. J'ai donc mis les permissions sur le /var/spool/lpd/lp1 a 777. Je suis désolé, mais c'est la seule manière que j'ai trouvé. Je suppose que j'aurais pu me débrouiller en mettant tout le monde dans le groupe `lp', ou en donnant au répertoire le groupe `users', etc. Mais pour l'instant, cela marche (avec root:lp comme droits).

Enfin, l'autre chose que les administrateurs devraient savoir est que le nom du compte sur la machine windows (qui essaye d'acceder a la machine linux) devrais etre le meme que le compte sur la machine linux. Par conséquent, si il y a un utilisateur 'joe' sur la machine windows, 'mamachinewin' et qu'il essaye d'imprimer sur l'imprimante de la machine linux 'eclectic' (\\eclectic\belen), il doit y avoir un utilisateur 'joe' sur la machine linux. De plus, le mot de passe de joe sera celui pour acceder a l'imprimante belen sur eclectic. Ce mot de passe sera demandé lors de l'ajout de l'imprimante sur la machine windows.

Je suppose que cela n'est pas vraiment la cas car j'ai déclaré mon imprimante en tant que 'public' dans mon smb.conf. Mais apparament, il continue a demander le mot de passe. (la boite de dialogue de windows ne vous permet de pas spécifier un autre nom d'utilisateur pour la machine distante. Il vous donne juste le nom de l'utilisateur local que vous avez donné lorsque vous vous etes logé au démarrage de windows.

--------------------------%<----------------------------------

Dr. Michael Langner ( langner@fiz-chemie.de souligne que les droits d'acces sur /var/spool/lpd peuvent etre évités en utilisant un "path = /tmp" et un "print command = lpr -r -P%p %s" a la place.

Quelquefois, une erreur d'interprétation Postscript arrivera lorsque vous imprimerez du Postscript d'une imprimante Windows, qui fera qu'une page supplémentaire sera imprimée a la fin de chaque impression. La derniere page aura toujours "%%[ Lastpage ]%%" d'inscrit en haut. Cela semble arriver uniquement avec Windows 95 et 98 car le Postscript est mal formé.

L'une des manieres d'empecher cela est d'utiliser un petit script qui supprime le bout de Postscript des travaux d'impression. Une autre maniere est de trouver un pilote Postscript pour windows qui sache faire du Postscript. La meilleur maniere est semble-t-il d'utiliser LPRng a la place de Postscript pour imprimer sur l'imprimante Samba.

Erik Ratcliffe ( erik@caldera.com) de Caldera me dit que le fait d'utiliser le pilote LPRng impliquera qu'il faudra utiliser le bon pilote sur les machines Windows. Sur le serveur Samba, il y a un entrée dans leur /etc/printcap qui ressemble a ça :

raw:\
        :rw:sh:
        :lp=/dev/lp1
        :sd=/var/spool/lpd/raw
        :fx=flp

LPRng ne necessite pas :\ a la fin de chaque ligne. Une entrée d'imprimante sera toujours necessaire dans le /etc/smb.conf pour l'imprimante physique. La commande print devra utiliser l'entrée "raw" du fichier /etc/printcap et les données devront etre envoyéees a l'imprimant sous forme binaire de la maniere suivante :

print command = lpr -b -Praw %s

Vous aurez peut etre aussi a mettre la file d'attente sur la machine Windows 95, et a imprimer directement sur l'imprimante plutôt que d'utiliser une file d'attente.


Page suivante Page précédente Table des matières