/usr/share/doc/HOWTO/de-html/DE-Drucker-HOWTO-11.html is in doc-linux-de 2003.10-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
<TITLE>Linux Drucker HOWTO: Drucker in einem Netzwerk </TITLE>
<LINK HREF="DE-Drucker-HOWTO-12.html" REL=next>
<LINK HREF="DE-Drucker-HOWTO-10.html" REL=previous>
<LINK HREF="DE-Drucker-HOWTO.html#toc11" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-Drucker-HOWTO-12.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Drucker-HOWTO-10.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Drucker-HOWTO.html#toc11"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s11">11.</A> <A HREF="DE-Drucker-HOWTO.html#toc11">Drucker in einem Netzwerk </A><!--Drucker!Netzwerk--></H2>
<P>Eine der Fähigkeiten von <CODE>lpd</CODE> ist es, daß man über ein Netzwerk auf
Druckern drucken kann, die physikalisch an einen anderen Rechner
angeschlossen sind. Mit einer sorgfältigen Kombination von
Filterskripten und anderen Utilities kann man mit <CODE>lpr</CODE> transparent
auf allen möglichen Druckern über alle möglichen Netzwerke drucken.</P>
<H2><A NAME="ss11.1">11.1</A> <A HREF="DE-Drucker-HOWTO.html#toc11.1">UNIX/lpd Server </A>
<!--Drucker!Netzwerk!lp--></H2>
<P>Um es anderen Rechnern zu ermöglichen, auf dem eigenen Drucker zu
drucken, müssen diese Rechner in <CODE>/etc/hosts.equiv</CODE> oder
<CODE>/etc/hosts.ldp</CODE> aufgelistet werden. Hierbei sollte man
beachten, daß <CODE>hosts.equiv</CODE>
viele weitere Effekte hat; man sollte sich sicher sein, was man tut,
wenn man hier einen Rechner auflistet. Man kann auch nur bestimmten
Benutzern des anderen Rechners erlauben, auf dem eigenen Drucker
zu drucken, indem man das <CODE>rs</CODE>-Attribut benutzt; siehe dazu
auch die <EM>lpd Manual Page</EM> für mehr Informationen.</P>
<H3>Client</H3>
<P>Um auf einem anderen Rechner zu drucken, erstelle man einen
<CODE>/etc/printcap</CODE>-Eintrag wie diesen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# DeskJet 500 als Netzwerkdrucker
lp|dj|deskjet:\
:sd=/var/spool/lpd/dj:\
:rm=geraet.da.draussen.de:\
:rp=druckername:\
:lp=/dev/null:\
:sh:
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Hierbei gibt <CODE>rm</CODE> die Internetadresse des Rechners, an dem
der Drucker angeschlossen ist, und <CODE>rp</CODE> die Warteschlange an.
Beachten Sie, daß es weiterhin ein Spool-Verzeichnis auf dem
lokalen Rechner gibt, das
von <CODE>lpd</CODE> verwaltet wird. Wenn der Netzwerkrechner beschäftigt
oder nicht erreichbar ist, bleiben Druckaufträge des lokalen Rechners
im Spoolverzeichnis, bis sie gesendet werden können.</P>
<H3>rlpr <!--rlpr--> <!--Drucker!rlpr--></H3>
<P>Man kann auch <CODE>rlpr</CODE> benutzen, um einen Druckauftrag direkt
in eine Warteschlange auf einem Netzwerkrechner zu schicken, ohne sich
die Mühe zu machen, den lokalen <CODE>lpd</CODE> entsprechend einzurichten.
Das ist besonders sinnvoll, wenn man nur selten auf verschiedenen
Druckern druckt.
Aus der Beschreibung von <CODE>rlpr</CODE>: </P>
<P><CODE>rlpr</CODE> verwendet TCP/IP, um Druckaufträge an <CODE>lpd</CODE>-Server in
einem Netzwerk zu schicken.</P>
<P>Anders als bei <CODE>lpr</CODE> müssen die Netzwerkdrucker
dem lokalen Rechner nicht bekannt sein (z.B. durch
<CODE>/etc/printcap</CODE>). Deshalb ist <CODE>rlpr</CODE>
wesentlich flexibler und benötigt weniger Verwaltung.</P>
<P><CODE>rlpr</CODE> kann überall da verwendet werden, wo ein traditionelles
<CODE>lpr</CODE> verwendet werden kann und ist abwärts-kompatibel zum
traditionellen BSD <CODE>lpr</CODE>.</P>
<P>Der Hauptvorteil von <CODE>rlpr</CODE> ist die Möglichkeit, <EM>von überall nach
überall</EM> zu drucken, ohne Rücksicht darauf, wie das System,
von dem aus man drucken will, konfiguriert ist. <CODE>rlpr</CODE> kann genau wie
das traditionelle lpr als Filter arbeiten, so daß Clients, die auf
einem Netzwerkrechner laufen (z.B. Netscape, XEmacs, etc.) ohne
größere Probleme auf Ihrem lokalen Rechner drucken können. </P>
<P><CODE>rlpr</CODE> ist erhältlich von:
<BLOCKQUOTE><CODE>
<A HREF="ftp://sunsite.unc.edu/pub/Linux/system/Printing/">sunsite.unc.edu:/pub/Linux/system/Printing/</A></CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss11.2">11.2</A> <A HREF="DE-Drucker-HOWTO.html#toc11.2">Win95, WinNT, LanManager oder Samba Server </A>
<!--Drucker!Netzwerk!Windows--> <!--Drucker!Netzwerk!Samba--> <!--Samba!Drucker--></H2>
<P>Es ist möglich, mit dem <CODE>smbclient</CODE>-Programm (Bestandteil
des Samba-Pakets) eine <CODE>lpd</CODE>-Warteschlange für einen
TCP/IP-basierenden SMB-Druckservice einzurichten.
Samba beinhaltet hierfür ein Script namens
<CODE>smbprint</CODE>. Kurz gesagt legt man eine Konfigurationsdatei für
den gewünschten Drucker im Spoolverzeichnis an und installiert das
<CODE>smbprint</CODE>-Script als <CODE>if</CODE>.</P>
<P>Der <CODE>/etc/printcap</CODE>-Eintrag sieht wie folgt aus:</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>Sie sollten die Dokumentation im <CODE>smbprint</CODE>-Skript lesen, um
weitere Informationen zu erhalten.</P>
<P>Man kann auch <CODE>smbclient</CODE> verwenden, um eine Datei direkt
an einen SMB-Druckservice zu schicken, ohne <CODE>lpd</CODE> zu
benutzen. Wie dieses funktioniert, ist in der Manual Page nachzulesen.</P>
<H2><A NAME="ss11.3">11.3</A> <A HREF="DE-Drucker-HOWTO.html#toc11.3">Netware Server </A>
<!--Drucker!Netzwerk!Netware--> <!--Netware--> <!--ncpfs!Drucker--></H2>
<P>Im ncpfs-Paket ist ein Programm namens <CODE>nprint</CODE> enthalten, das
die gleichen Funktionen wie <CODE>smbprint</CODE> für NetWare
bietet. ncpfs ist erhältlich bei:
<BLOCKQUOTE><CODE>
<A HREF="ftp://sunsite.unc.edu/pub/Linux/system/filesystems/ncpfs/">sunsite.unc.edu:/pub/Linux/system/filesystems/ncpfs/</A></CODE></BLOCKQUOTE>
Auszug dem LSM-Eintrag von Version 0.16:</P>
<P>
<BLOCKQUOTE>
Mit ncpfs kann man Laufwerke auf dem Netzwerk-Server unter Linux mounten.
Man kann auch über Netware-Warteschlangen drucken und Netware-Warteschlangen
im Linux Drucksystem spoolen. Es wird ein Kernel 1.2.x oder 1.3.54 oder
höher benötigt. ncpfs funktioniert <EM>nicht</EM> mit 1.3.x-Kernels
unter 1.3.54.
</BLOCKQUOTE>
</P>
<P>Damit <CODE>nprint</CODE> über <CODE>lpd</CODE> arbeitet, schreibt man ein kleines
Shellscript, das als <CODE>if</CODE> für die entsprechende <CODE>lpd</CODE>-Warteschlange
aufgerufen wird. Dieses Script gibt die Druckdaten, die es vom
dem <CODE>lpd</CODE> erhält, dann auf dem Netware-Drucker aus.</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>Das <CODE>nprint-script</CODE> könnte ungefähr so aussehen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
#! /bin/sh
# Als erstes sollten Sie den guest Account mit keinem
# Paßwort ausprobieren!
/usr/local/bin/nprint -S net -U name -P passwd \
-q printq-name -
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss11.4">11.4</A> <A HREF="DE-Drucker-HOWTO.html#toc11.4">Apple Server </A>
<!--Drucker!Netzwerk!Appletalk--> <!--Netatalk!Drucker--> <!--Appletalk--></H2>
<P>Im netatalk-Paket ist etwas Ähnliches wie <CODE>nprint</CODE> und
<CODE>smbclient</CODE> enthalten. Andere Leute haben die Vorgehensweise
beim Drucken über und von einem Apple-Netzwerk aus wesentlich
besser beschrieben, als ich es jemals werde; bitte schauen Sie sich
hierfür das <EM>Linux Netatalk HOWTO</EM> auf <CODE>
<A HREF="http://thehamptons.com/anders/netatalk/">http://thehamptons.com/anders/netatalk/</A></CODE> an.</P>
<H2><A NAME="ss11.5">11.5</A> <A HREF="DE-Drucker-HOWTO.html#toc11.5">Drucker mit Ethernetanschluß </A>
<!--Drucker!Netzwerk!Ethernetanschluß--></H2>
<P>Drucker für den professionellen Einsatz verfügen häufig über ein
Ethernet-Interface. Die meisten dieser Geräte unterstützen
direkt das lp-Protokoll, so daß man sie einfach per lpd und
der <CODE>rp</CODE>-Option ansprechen. Man sollte den Anweisungen
folgen, die mit dem Drucker oder dem Netzwerkadapter des Druckers
geliefert wurden.
Ein Drucker von HP könnte z.B. mit einem solchem
<CODE>printcap</CODE>-Eintrag arbeiten:</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>HP LaserJet Drucker mit JetDirect Interface stellen im
allgemeinen zwei eingebaute Queues zur Verfügung:
<DL>
<DT><B>raw</B><DD>
<P>Akzeptiert Druckdaten in PCL und eventuell PostScript.</P>
<DT><B>text</B><DD>
<P>Kann zum Druck von reinen ASCII-Dateien verwendet werden,
wobei der beschriebene Treppeneffekt automatisch korrigiert
wird.</P>
</DL>
</P>
<P>Wenn Sie eine JetDirect Plus3 3-Port Box besitzen,
besitzen die Queues die Bezeichnungen »raw1«,
»text2« usw.</P>
<P>In einem großen Netz, in dem einige Drucker
kein PostScript unterstützen, könnte es sinnvoll sein, einen
Print-Server einzurichten, auf dem alle Rechner drucken und auf
dem alle Ghostscript-Jobs laufen. </P>
<P>Dies erlaubt Ihrem Linux-Rechner auch, als Spool-Server zu
arbeiten, so daß die Netzwerkbenutzer ihre Druckaufträge schnell
beenden und weiterarbeiten können, ohne darauf warten zu müssen,
daß der Drucker erst fremde Aufträge fertigstellt.</P>
<P>Um dies zu erreichen, richten Sie eine Queue auf Ihrem
Linux-Rechner ein, die auf den HP Laserjet mit Ethernetkarte
verweist (siehe oben). Nun stellen Sie alle Clientrechner in Ihrem
LAN so ein, daß sie die Linux-Queue benutzen (z.B. lj-5 im
Beispiel oben).</P>
<P>Anscheinend beachten einige HP Netzwerkdrucker die
Deckblatteinstellungen nicht, die von den Clients geschickt
werden; Sie können das intern generierte Deckblatt abschalten,
indem Sie sich per telnet auf den Drucker einloggen, zweimal Return
drücken und danach <CODE>banner: 0</CODE> gefolgt von <CODE>quit</CODE> eingeben.
Sie können auch
andere Einstellungen auf diese Art verändern; tippen Sie <CODE>?</CODE> ein,
um eine Liste angezeigt zu bekommen.</P>
<H3>Alte HP-Drucker <!--Drucker!Netzwerk!HP--></H3>
<P>Einige Drucker und externe Druckserver haben zwar eine
Ethernetschnittstelle, unterstützen jedoch nicht das
<CODE>lp</CODE>-Protokoll. Oftmals finden statt dessen spezielle Treiber
Verwendung, die für Linux natürlich nicht existieren. Einige
dieser Geräte speichern Druckaufträge auch nicht zwischen, so daß
es einen Rechner geben muß, der Druckjobs sammelt und nacheinander
an den Drucker schickt.</P>
<P>Erwähnenswert in dieser Kategorie sind frühe JetDirect
und einige JetDirectEx Karten. Grundsätzlich muß man zum Drucken auf
diesen Drucker eine TCP-Verbindung zu dem Drucker auf einem bestimmten
Port (typischerweise 9100, oder 9100, 9101 und 9102 für 3-Port
Boxen) öffnen und den Druckauftrag hier durch schicken. Das kann
u.a. in Perl implementiert werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
#!/usr/bin/perl
# Dank gebührt Dan McLaughlin, der die Originalversion
# dieses Skriptes geschrieben hat.
$fileName = @ARGV[0];
open(IN,"$fileName") ||
die "Kann Datei $fileName nicht öffnen";
$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 $!;
}
# Gibt dem Socket eine Adresse
if (bind(S, $this)) {
# print "bind ok\n";
}
else {
die $!;
}
# Ruft den Server auf.
if (connect(S,$that)) {
# print "connect ok\n";
}
else {
die $!;
}
# Setzt Befehlspuffer für den Socket.
select(S); $| = 1; select(STDOUT);
# print S "@PJL ECHO Hi $hostname! $ends";
# print S "@PJL OPMSG DISPLAY=\"Job $whoami\" $ends";
# print S $dpi300;
# Durch Aufteilung Deadlock verhindern.
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;
}
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss11.6">11.6</A> <A HREF="DE-Drucker-HOWTO.html#toc11.6">Filter für Netzwerkdrucker </A>
<!--Drucker!Netzwerk!Filter--> <!--printcap!Netzwerkdrucker--></H2>
<P>Eine Eigenart von <CODE>lpd</CODE> ist, daß ein <CODE>if</CODE> für Netzwerkdrucker nicht
aufgerufen wird. Wenn das nötig sein sollte, kann man eine doppelte
Warteschlange einrichten und den Job an die zweite Warteschlange
weitergeben. Ein Beispiel für eine passende <CODE>printcap</CODE> könnte so
aussehen:</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>Das passenden <CODE>filter-lj-5</CODE>-Script wäre dabei:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
#!/bin/sh
gs <options> -q -dSAFER -sOutputFile=- - | \
lpr -Plj-5-remote -U$5
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Die Option <CODE>-U</CODE> von <CODE>lpr</CODE> funktioniert nur, wenn
<CODE>lpr</CODE> als ein Daemon
gestartet wurde und setzt den Namen des Auftraggebers in der
weitergegebenen Warteschlange. Man sollte eventuell eine stabilere
Methode verwenden, um den Benutzernamen zu ermitteln, denn manchmal ist
es nicht Argument 5. Weitere Informationen finden sich in der Manual Page
zur <CODE>printcap</CODE>.</P>
<H2><A NAME="ss11.7">11.7</A> <A HREF="DE-Drucker-HOWTO.html#toc11.7">Windows Client </A>
<!--Drucker!Netzwerk!Windows--> <!--Drucker!Netzwerk!Samba--> <!--Samba!Drucker--></H2>
<P>Drucken von einem Windows (oder wohl auch OS/2) Client auf eine
Linuxmaschine wird über SMB direkt unterstützt, wenn man das
Samba-Paket benutzt, das auch die Benutzung Ihres
Linux-Filesystems von Windows aus ermöglicht.</P>
<P>Samba beinhaltet eine ziemlich vollständige Dokumentation, und es
gibt die recht gute <EM>Samba-FAQ</EM>, welche sich ebenfalls damit
beschäftigt. Sie können entweder einen Magic-Filter auf dem
Linuxrechner einrichten und PostScript darauf ausgeben, oder
druckerspezifische Treiber auf allen Windows-Maschinen
installieren und eine Queue ganz ohne Filter benutzen. Sich auf
die Windows-Treiber zu stützen sorgt manchmal für ein besseres
Druckbild, ist aber etwas mehr administrativer Aufwand bei vielen
Windows-Rechnern. Sie sollten es daher zuerst mit PostScript
versuchen.</P>
<H2><A NAME="ss11.8">11.8</A> <A HREF="DE-Drucker-HOWTO.html#toc11.8">Apple Client </A>
<!--Drucker!Netzwerk!Appletalk--> <!--Netatalk!Drucker--> <!--Appletalk--></H2>
<P>Netatalk unterstützt das Drucken von Apple-Clients über
EtherTalk. Siehe hierfür auch die <EM>Netatalk HOWTO</EM> Page
unter:</P>
<P>
<BLOCKQUOTE><CODE>
<A HREF="http://thehamptons.com/anders/netatalk/">http://thehamptons.com/anders/netatalk/</A></CODE></BLOCKQUOTE>
</P>
<H2><A NAME="ss11.9">11.9</A> <A HREF="DE-Drucker-HOWTO.html#toc11.9">Netware Client </A>
<!--Drucker!Netzwerk!Netware--> <!--ncpfs!Drucker--> <!--Netware--></H2>
<P>Das ncpfs-Paket beinhaltet einen Daemon namens pserver, der
benutzt werden kann, um Dienste für eine NetWare Druck-Queue zur
Verfügung zu stellen. Soweit ich es verstanden habe, benötigt
dieses System ein »Bindery«-basiertes NetWare,
z.B. 2.x, 3.x oder
4.x, mit eingeschaltetem Bindery-Zugriff.</P>
<P>Für mehr Informationen über ncpfs und sein pserver-Programm
sollten Sie einen Blick auf die ncpfs FTP-Site unter folgender
Adresse werfen:
<BLOCKQUOTE><CODE>
<A HREF="ftp://ftp.gwdg.de/pub/linux/misc/ncpfs/">ftp.gwdg.de:/pub/linux/misc/ncpfs/</A></CODE></BLOCKQUOTE>
</P>
<HR>
<A HREF="DE-Drucker-HOWTO-12.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Drucker-HOWTO-10.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Drucker-HOWTO.html#toc11"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|