Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly
1st Edition November 1999
1-56592-449-5, Order Number: 4495
416 pages, $34.95

Buy the hardcopy

Inhaltsverzeichnis


Previous: 6.6 Logon Scripts Kapitel 7 Next: 7.2 Drucken auf Windows-Client-Drucker
 

7. Drucken und Namensauflösung

Dieses Kapitel nimmt zwei Samba-Themen in Angriff: das Einrichten von Druckern für die Verwendung mit einem Sambaserver und die Konfiguration von Samba, damit es einen Windows Internet Name Service (WINS)-Server nutzen oder selbst ein WINS-Server werden kann. Samba erlaubt Client-Maschinen, Dokumente an Drucker zu senden, die am Sambaserver hängen. Außerdem kann Samba dich ebenfalls beim Druck von Unix-Dokumenten auf Druckern einer Windows-Maschine unterstützen. Im ersten Teil dieses Kapitels werden wir besprechen, wie man Drucker dazu bringt, auf jeder Seite zu arbeiten.

In der zweiten Hälfte des Kapitels stellen wir den Windows Internet Name Service vor, Microsofts Implementation eines NetBIOS Name Servers (NBNS). Wie in Kapitel 1, Samba kennenlernen, erwähnt, erlaubt ein NBNS Maschinen, Namensauflösung auf einem NetBIOS-Netzwerk durchzuführen, ohne sich auf Broadcasts verlassen zu müssen. Stattdessen weiß jede Maschine exakt, wo der WINS-Server ist und kann ihn nach den IP-Adressen von anderen Maschinen auf dem Netzwerk fragen.

7.1 Printjobs an Samba senden

Ein mit dem Sambaserver verbundener Drucker erscheint in der Liste der Shares, die in der Netzwerkumgebung angeboten werden. Wenn der Drucker auf dem Client registriert ist und der Client den korrekten Druckertreiber installiert hat, kann der Client mühelos Druck-Jobs an einen mit dem Sambaserver verbundenen Drucker senden. Figur 7.1 zeigt einen Samba-Drucker, wie er in der Netzwerkumgebung eines Windows-Clients erscheint.

Damit du Drucker mit Samba verwalten kannst, solltest du den Basis-Prozess verstehen, durch den Drucken auf einem Netzwerk stattfindet. Das Senden eines Druck-Jobs zu einem Drucker auf einem Sambaserver umfasst vier Schritte:

  1. Öffnen und Authentifizieren einer Verbindung zur Drucker-Share

  2. Kopieren der Datei über das Netzwerk

  3. Schließen der Verbindung

  4. Drucken und Löschen der Dateikopie

    Figur 7.1: Ein Samba-Drucker in der Netzwerkumgebung

    Figur 7.1

Wenn ein Druck-Job bei einem Sambaserver ankommt, werden die Druckdaten temporär auf die Platte in das Verzeichnis geschrieben, das von der Option path in der Drucker-Share festgelegt wurde. Dann führt Samba einen Unix-Druckbefehl aus, um die Datendatei zum Drucker zu schicken. Der Job wird gedruckt als der authentifizierte User der Share. Beachte, dass dies der guest user sein kann, abhängig von der Konfiguration der Share.

7.1.1 Druck-Befehle

Um das Dokument zu drucken, musst du Samba sagen, welches Kommando zum Drucken und Löschen einer Datei gehört. Ein solcher Befehl lautet unter Linux:

lpr -r -Pprinter file

Dieser fordert lpr zum Kopieren des Dokuments in einen Spoolbereich auf, gewöhnlich /var/spool, holt sich den Namen des Druckers aus der System-Konfigurationsdatei (/etc/printcap) und interpretiert die hier gefundenen Regeln, um zu entscheiden, wie die Daten zu verarbeiten sind und an welches physikalische Gerät sie zu senden sind. Beachte, dass wegen der eingesetzten Option -r die in der Kommandozeile genannte Datei nach dem Drucken gelöscht wird. Die entfernte Datei ist natürlich nur eine auf dem Sambaserver gespeicherte Kopie, die Originaldatei auf dem Client bleibt davon unberührt.

Linux verwendet einen Berkeley (BSD)-Stil zum Drucken. Nun, der Vorgang ist ähnlich wie auf System V Unix. Hier wird aus Drucken und Löschen ein zusammengesetzter Befehl:

lp -dprinter -s file; rm  file

Bei System V wird die Datei /etc/printcap mit einer Reihe verschiedener Konfigurationsdateien ersetzt, die in /usr/spool/lp versteckt sind, und hier gibt es keine Option zum Löschen der Datei. Du musst es selbst tun, darum haben wir den Befehl rm hinten angehängt.

7.1.2 Variablen zum Drucken

Samba stellt vier Variablen speziell für die Benutzung bei Druck-Konfigurationsoptionen bereit. Man sieht sie in Tabelle 7.1.


Tabelle 7.1: Variablen zum Drucken

Variable

Definition

%s

Der volle Pfadname der zu druckenden Datei auf dem Sambaserver

%f

Der Name der zu druckenden Datei selbst (ohne den vorne stehenden Pfad) auf dem Sambaserver

%p

Der Name des verwendeten Unix-Druckers

%j

Die Nummer des Druck-Jobs (zu verwenden mit lprm, lppause, und lpresume)

7.1.3 Ein minimales Printing Setup

Beginnen wir mit einer einfachen aber anschaulichen Druck-Share. Unter der Annahme, dass du auf einem Linuxsystem bist und einen in der Printer-Capabilities-Datei angeführten Drucker namens lp besitzt, wird der folgende Zusatz zu deiner smb.conf-Datei den Drucker über das Netzwerk erreichbar machen:

[printer1]
	printable = yes
	print command = /usr/bin/lpr -r  %s
	printer = lp
	printing = BSD
	read only = yes
	guest ok = yes

Diese Konfiguration erlaubt jedem, Daten an den Drucker zu senden, einiges können wir später noch ändern. Wichtig ist im Augenblick zu verstehen, dass die Variable %s in der Option print command durch den Namen der zu druckenden Datei ersetzt wird, wenn Samba den Befehl ausführt. Das Verändern des print command, um eine unterschiedliche Art Unix-Maschine zu anzuzeigen, schließt typischerweise nur den Austausch der rechten Seite der Option print command ein, egal mit welchem Befehl, den du für dein System brauchst, und den Wechsel des Ziels der Option printing.

Schauen wir uns die Befehle für ein System V Unix an. Mit Variablen-Substitution wird aus dem System V Unix-Befehl:

print command = lp -d%p -s %s; rm %s

Wie früher erwähnt, löst die Variable %p den Namen des Druckers auf, während die Variable %s den Namen der Datei auflöst. Danach kannst du die Option printing ändern, um zu zeigen, dass du eine System V-Architektur benützt:

printing = SYSV

Wenn du Share-Level-Security verwendest, schenke dem von Samba verwendeten guest account besondere Aufmerksamkeit. Die typische Einstellung nobody könnte vielleicht nicht unter dem Betriebssystem drucken dürfen. Wenn das für dein Betriebssystem zutrifft, solltest du eine Option guest account unter der Druck-Share (oder vielleicht auch der globalen Share) platzieren und einen Account anführen, der das kann. Ein populärer Kandidat bei den Samba-Autoren ist der ftp-Account, der oft zur Sicherheit für unberechtigte Gast-User vorkonfiguriert wird. Du kannst ihn mit dem folgenden Befehl einstellen:

guest account = ftp

Eine andere übliche Frage beim Drucken ist, das Clients den Status eines Druckjobs abfragen müssten, der zum Sambaserver geschickt wurde. Samba lehnt kein Dokument ab, das zu einer bereits beschäftigten Drucker-Share gesendet wird. Folglich braucht Samba die Fähigkeit, nicht nur den Status des momentanen Druckjobs dem Client mitzuteilen, sondern auch welche Dokumente gerade warten, damit sie auf diesem Drucker ausgedruckt werden. Samba muss auch dem Client die Fähigkeit liefern, Druckjobs anzuhalten, wieder fortzusetzen und aus der Druckerwarteschlange zu entfernen. Samba bietet Optionen für jede dieser Aufgaben. Wie du vielleicht vermutest, borgen sie die Funktion von bestehenden Unix-Befehlen aus. Die Optionen sind:

  • lpq command

  • lprm command

  • lppause command

  • lpresume command

Wir werden über diese Optionen anschließend genauer berichten. Nun, hauptsächlich der Wert der Konfigurations-Option printing wird ihre Werte bestimmen, und du solltest die vorgegebenen Werte dieser Optionen nicht verändern müssen.

Hier erinnern wir an ein paar wichtige Dinge über Drucker-Shares:

  • Du musst printable = yes in alle Drucker-Shares (auch [printers]) stellen, sodass Samba weiß, dass sie Drucker-Shares sind. Wenn du das vergisst, werden die Shares zum Drucken nicht zu gebrauchen sein und dagegen als Platten-Shares betrachtet werden.

  • Wenn du die Konfigurationsoption path in der Drucker-Sektion setzt, werden alle Dateien, die zu(m) (den) Drucker(n) gesendet werden, in das Verzeichnis kopiert, das du genannt hast anstatt des voreingestellten Standorts /tmp. Weil die Größe des /tmp zugewiesenen Plattenplatzes in manchen Unix-Betriebssystemen verhältnismäßig klein sein kann, entscheiden sich viele Administratoren stattdessen /var/spool oder irgendein anderes Verzeichnis zu verwenden.

  • Die Option read only wird in Drucker-Shares ignoriert.

  • Wenn du in einer Drucker-Share guest ok = yes gesetzt hast und Samba für Share-Level-Security konfiguriert ist, ist es jedem erlaubt, Daten zum Drucker zu senden wie der guest account-User.

Die Verwendung eines oder mehrerer Samba-Maschinen als Printserver gewährt dir ziemlich viel Flexibilität auf deinem LAN. Du kannst leicht deine verfügbaren Drucker aufteilen, manche auf Mitglieder einer Abteilung beschränken, oder du kannst eine Bank von Druckern für alle bereitstellen. Außerdem kannst du einen Drucker auf wenige Auserwählte beschränken, indem du die Option der berechtigten valid users zu seiner Share-Definition hinzufügst:

[deskjet]
	printable = yes
	path = /var/spool/samba/print
	valid users = gail sam

Alle anderen Zugangsoptionen einer Share, die im vorigen Kapitel festgelegt wurden, sollten genauso für Drucker-Shares arbeiten. Weil auf die Drucker selbst durch Samba über den Namen zugegriffen wird, ist es auch einfach, Druckdienste unter einigen Servern zu aufzuteilen, indem bekannte Unix-Befehle für Aufgaben verwendet werden, wie Ausgleich oder Wartung zu laden.

7.1.4 Die [printers] Share

Kapitel 4, Disk Shares , stellte [printers] kurz vor, eine spezielle Share zum automatischen Erstellen von Druckdiensten. Vergewissern wir uns, wie das abläuft: wenn du in der Konfigurationsdatei eine Share namens [printers] erstellst, schaut Samba automatisch in deine Printer-Capabilities-Datei und erzeugt eine Druck-Share für jeden Drucker, der in der Datei vorkommt. Wenn z.B. der Sambaserver die Drucker lp, pcl und ps in seiner Printer-Capabilities-Datei hätte, würde Samba drei Drucker-Shares mit diesen Namen bereitstellen, jeden konfiguriert mit den Optionen in der [printers]-Share.

Merke, dass Samba folgende Regeln befolgt, wenn ein Client eine Share anfordert, die noch nicht durch die smb.conf-Datei erzeugt wurde:

  • Wenn der Sharename mit einem Usernamen in der System-Passwortdatei übereinstimmt und eine [homes]-Share existiert, wird eine neue Share mit dem Namen des Users erzeugt und mit den Werten aus den Sektionen [homes] und [global] initialisiert.

  • Wenn dagegen der Name mit einem Drucker in der System-Printer-Capabilities-Datei übereinstimmt und eine [printers]-Share existiert, wird eine neue Share mit dem Namen des Druckers erzeugt und mit den Werten aus der Sektion [printers] initialisiert. (Variable in der [global]-Sektion gelten hier nicht.)

  • Wenn keines von beiden gelingt, sucht Samba nach einer Share default service. Wird keine gefunden, meldet es einen Fehler.

Das beleuchtet einen wichtigen Punkt: sei vorsichtig, dass du einem Drucker nicht denselben Namen wie einem User gibst. Sonst endest du bei einer Anmeldung zu einer Disk-Share, wenn du eigentlich eine Drucker-Share haben wolltest.

Hier ist eine beispielhafte [printers]-Share für ein Linux (BSD) System. Einige dieser Optionen sind schon voreingestellt; nun, wir zählen sie jedenfalls aus Gründen der Anschaulichkeit auf:

[global] 
	printing = BSD
	print command = /usr/bin/lpr -P%p -r %s 
	printcap file = /etc/printcap 
	min print space = 2000

[printers] 
	path = /usr/spool/public 
	printable = true  
	guest ok = true 
	guest account = pcguest 

Hier haben wir Samba mit globalen Optionen ausgestattet, die den Typ des Druckens (BSD) festlegen, einen Druckbefehl zum Senden von Daten zum Drucker und zum Entfernen einer temporären Datei, unsere voreingestellte Printer-Capabilities-Datei und einen Mindestspeicherplatz von 2 MB zum Drucken.

Außerdem haben wir für jeden Systemdrucker eine [printers]-Share angelegt. Unser temporäres Spool-Verzeichnis wird von der Option path festgelegt: /usr/spool/public. Alle Shares sind als printable gekennzeichnet - das ist notwendig, besonders in der Sektion [printers]. Die zwei guest-Optionen sind nützlich in dem Fall, dass Samba Share-Level-Security verwendet: wir erlauben Gastzugriff auf den Drucker und wir bestimmen den Gastuser, den Samba zum Ausführen der Druckbefehle verwenden sollte.

7.1.5 Drucken testen

Hier steht, wie du das Drucken vom Sambaserver aus testen kannst. Nehmen wir den kompliziertesten Fall an und benützen einen Gast-Account. Zuerst führst du den Sambabefehl testparm auf deiner Konfigurationsdatei aus, welche die Druck-Shares einthält, wie wir es im Kapitel 2, Samba auf einem Unix-System installieren, taten. Das wird dir mitteilen, ob es syntaktische Probleme mit der Konfigurationsdatei gibt. Hier steht z.B., was du sehen würdest, wenn du die Konfigurationsoption path im vorigen Beispiel weggelassen hättest:

# testparm 
Load smb config files from /usr/local/samba/lib/smb.conf 
Processing configuration file "/usr/local/samba/lib/smb.conf" 
Processing section "[global]" 
Processing section "[homes]" 
Processing section "[data]" 
Processing section "[printers]" 
No path in service printers - using /tmp 
Loaded services file OK. 
Press enter to see a dump of your service definitions
Global parameters: 
	load printers: Yes 
	printcap name: /etc/printcap
Default service parameters: 
	guest account: ftp 
	min print space: 0 
	print command: lpr -r -P%p %s 
	lpq command: lpq -P%p 
	lprm command: lprm -P%p %j 
lppause command: 
	lpresume command: 
 Service parameters [printers]: 
	path: /tmp 	
	print ok: Yes 
	read only: true 
	public: true 

Zweitens, versuch den Befehl testprns druckername. Dieses einfache Programm bestätigt, dass der genannte Drucker in deiner printcap-Datei verfügbar ist. Wenn deine printcap-Datei nicht auf dem üblichen Platz ist, kannst du ihren vollen Pfadnamen als zweites Argument zum Befehl testprns angeben:

# testprns lp /etc/printcap
Looking for printer lp in printcap file /etc/printcap
Printer name lp is valid.

Als Nächstes melde dich als Gastuser an, geh in das Spool-Verzeichnis und stell sicher, dass du drucken kannst, indem du denselben Befehl verwendest, von dem testparm behauptet, dass ihn Samba benützt. Wie vorher erwähnt, sagt dir dieser, ob du den Gast-Account ändern musst, weil der voreingestellte Account vielleicht nicht drucken darf.

Drucke schließlich etwas auf dem Sambaserver via smbclient und schau, ob die folgenden Aktionen ablaufen:

  • Der Job erscheint (kurz) im Samba Spool-Verzeichnis, das durch den Pfad festgelegt wurde.

  • Der Job taucht im Spool-Verzeichnis deiner Druck-Systeme auf.

  • Der Job verschwindet aus dem Spool-Verzeichnis, das Samba benützte.

Wenn smbclient nicht drucken kann, kannst du die Option print command zurückstellen, um Information der Fehlersuche zu sammeln:

print command = /bin/cat %s >>/tmp/printlog; rm %s

oder:

print command = echo "printed %s on %p" >>/tmp/printlog

Ein übliches Problem bei der Samba Drucker-Konfiguration ist, wenn man vergisst, die vollen Pfadnamen für die Befehle zu verwenden; einfache Befehle funktionieren oft nicht, weil der PATH des Gast-Accounts sie nicht einschließt. Ein anderes häufiges Problem ist, nicht die richtigen Rechte für das Spool-Verzeichnis zu besitzen.

Es gibt mehr Information über die Fehlersuche bei Druckern in der Samba-Dokumentation (Printing.txt). Außerdem wird über die Unix-Drucksysteme in AEleen Frisch's Essential Systems Administration (herausgegeben von O'Reilly) genauer berichtet.

7.1.6 Einrichten und Testen eines Windows-Clients

Nun bietet Samba einen funktionierenden Drucker, und du musst ihn auf einem Windows-Client einrichten. Such den Sambaserver in der Netzwerkumgebung. Er sollte jetzt jeden verfügbaren Drucker zeigen. In Figur 7.1 sehen wir z.B. einen Drucker namens lp.

Als Nächstes musst du dem Windows-Client den Drucker bekanntgeben. Doppelklicke auf das Drucker-Icon zum Starten. Wenn du versuchst, einen nicht installierten Drucker auszuwählen (wie du es gerade tust), fragt dich Windows, ob es helfen soll, ihn für das Windows-System zu konfigurieren. Antworte "Ja", was den Drucker-Wizard öffnet.

Als Erstes fragt dich der Wizard, ob du unter DOS drucken musst. Nehmen wir an, du musst nicht, also wähle Nein und drück den Button Weiter, um zum Hersteller/Modell-Fenster zu kommen, wie in Figur 7.2 gezeigt.

Figur 7.2: Ein Drucker in der Netzwerkumgebung

Figur 7.2

In dieser Dialogbox solltest du eine lange Liste von Herstellern und Modellen für fast jeden vorstellbaren Drucker sehen. Wenn du deinen Drucker nicht auf der Liste siehst, du aber weißt, dass er ein PostScript-Drucker ist, wähle Apple als den Hersteller und Apple Laser Writer als das Modell. Das ergibt das bestmögliche PostScript-Drucker-Setup, und wohl eines der zuverlässigsten. Wenn du schon irgendwelche PostScript-Drucker angebunden hast, wirst du gefragt, ob du den existierenden Treiber ersetzen oder weiterverwenden willst. Sei dir bewusst, wenn du ihn durch einen neuen ersetzt, dass deine anderen Drucker Fehlfunktionen haben könnten. Daher empfehlen wir dir, behalte deine alten Druckertreiber in Verwendung, so lange sie zufriedenstellend arbeiten.

Als Nächstes fordert dich der Drucker-Wizard auf, dem Drucker einen Namen zu geben. Figur 7.3 zeigt dieses Beispiel, wo der Name unseres zweiten Laserdruckers vorgegeben ist. Hier benennst du ihn um von Apple Laserwriter (Copy 2) zu "ps auf Sambaserver", damit du weißt, wo du wegen der Ausdrucke suchen musst. In Wirklichkeit kannst du den Drucker nennen wie du willst.

Figur 7.3: Drucker-Hersteller und -Modelle

Figur 7.3

Zum Schluss fragt der Drucker-Wizard, ob er eine Testseite drucken soll. Klick auf Ja, und du solltest mit dem Dialog in Figur 7.4 konfrontiert werden.

Figur 7.4: Ausdruck erfolgreich beendet

Figur 7.4

Wenn der Test-Ausdruck erfolglos war, drück den Nein-Button in Figur 7.4, und der Drucker-Wizard wird mit dir einige Debug-Schritte auf der Client-Seite des Prozesses durchgehen. Wenn der Test-Ausdruck funktioniert, dann gratuliere! Der Remote-Drucker steht nun deinen ganzen PC-Applikationen über die Datei- und Druckmenüs zur Verfügung.

7.1.7 Druckertreiber automatisch einrichten

Der vorhergehende Abschnitt beschrieb, wie man einen Druckertreiber für dein Windows-System manuell konfiguriert. Nun, als ein Systemadministrator kannst du nicht immer garantieren, das User einen solchen Vorgang durchführen können, ohne Fehler zu machen. Glücklicherweise kannst du Samba auffordern, Druckertreiber automatisch für einen bestimmten Drucker einzurichten.

Samba besitzt drei Optionen, die zum automatischen Einrichten von Druckertreibern für Clients verwendet werden können, die sich zum ersten Mal anmelden. Diese Optionen sind printer driver, printer driver file und printer driver location. Dieser Abschnitt erklärt, wie diese Optionen verwendet werden, damit User den Hersteller-Dialog im Drucker-Einrichtungs-Wizard oben überspringen dürfen.

Für weitere Information, wie man das tut, schau in die Datei PRINTER_DRIVER.TXT in der Dokumentation der Samba-Distribution.

Es gibt vier Hauptschritte:

  1. Installiere die Druckertreiber auf einem Windows-Client (der Drucker muss nicht angeschlossen sein).

  2. Erstelle eine Drucker-Definitionsdatei von der Information auf einer Windows-Maschine.

  3. Erstelle eine PRINTER$ Share, wo die sich ergebenden Treiberdateien platziert werden können.

  4. Modifiziere die Samba Konfigurationsdatei dementsprechend.

Gehen wir nun die vier Schritte im Detail durch.

7.1.7.1 Installiere die Treiber auf einem Windows-Client

Verwende Windows 95/98 für diesen Schritt. Es spielt keine Rolle, welche Client du wählst, solange er fähig ist, die geeigneten Treiber für den Drucker zu laden. Tatsächlich brauchst du nicht einmal den Drucker an der Maschine angeschlossen haben. Alles, was dich hier interessiert, ist die geeigneten Treiberdateien in das Windowsverzeichnis zu bekommen. Geh zuerst zum Druckerfenster vom Arbeitsplatz und doppelklicke auf das Icon Neuer Drucker, siehe Figur 7.5.

Figur 7.5: Das Druckerfenster

Figur 7.5

An dieser Stelle kannst du den Wizard-Dialogen folgen, um den Hersteller und das Modell des Druckers auszuwählen. Wenn er dich fragt, ob du von MS-DOS aus drucken willst, antworte Nein. Windows sollte die geeigneten Treiber-Ressourcen von seiner CD-ROM laden und dich fragen, ob du eine Testseite drucken willst. Antworte wieder mit Nein und schließ den Dialog Neuer Drucker.

7.1.7.2 Erstelle eine Drucker-Definitionsdatei

Du kannst eine Drucker-Definitionsdatei erstellen, indem du das Skript make_ printerdef im Verzeichnis /usr/local/samba/bin benützt. Um dieses Skript zu verwenden, musst du die folgenden vier Dateien von einem Windows-Client herüberkopieren:[1]

[1] Ältere Windows 95-Clients könnten nur die ersten zwei Dateien haben.

C:\WINDOWS\INF\MSPRINT.INF
C:\WINDOWS\INF\MSPRINT2.INF
C:\WINDOWS\INF\MSPRINT3.INF
C:\WINDOWS\INF\MSPRINT4.INF

Sobald du die vier Dateien hast, kannst du eine Drucker-Definitionsdatei erstellen, indem du den geeigneten Druckertreiber und seine .INF -Datei verwendest. Wenn der Druckertreiber mit den Buchstaben A-K beginnt, verwende entweder die Datei MSPRINT.INF oder die Datei MSPRINT3.INF. Wenn er mit den Buchstaben L-Z beginnt, verwende die Datei MSPRINT2.INF oder die Datei MSPRINT4.INF. Du musst vielleicht mit grep jede Datei durchsuchen, wo dein bestimmter Treiber ist. Für das folgende Beispiel haben wir unseren Treiber in MSPRINT3.INF ausfindig gemacht und eine Drucker-Definitionsdatei für einen HP Deskjet 560C-Drucker erzeugt:

$grep "HP DeskJet 560C Printer" MSPRINT.INF MSPRINT3.INF
MSPRINT3.INF: "HP DeskJet 560C Printer"=DESKJETC.DRV,HP_DeskJet_ ...

$make_printerdef MSPRINT3.INF "HP DeskJet 560C Printer" >printers.def
FOUND:DESKJETC.DRV
End of section found
CopyFiles: DESKJETC,COLOR_DESKJETC
Datasection: (null)
Datafile: DESKJETC.DRV
Driverfile: DESKJETC.DRV
Helpfile: HPVDJC.HLP
LanguageMonitor: (null)

Copy the following files to your printer$ share location:
DESKJETC.DRV
HPVCM.HPM
HPVIOL.DLL
HPVMON.DLL
HPVRES.DLL
HPCOLOR.DLL
HPVUI.DLL
HPVDJCC.HLP
color\HPDESK.ICM

Beachte die Dateien, die das Skript zu kopieren verlangt. Du wirst sie für den nächsten Schritt brauchen.

7.1.7.3 Erstelle eine PRINTER$ Share

Dieser Teil ist relativ leicht. Erstelle eine Share namens [PRINTER$] in deiner smb.conf, die auf ein leeres Verzeichnis auf dem Sambaserver zeigt. Sobald das geschehen ist, kopiere die Dateien, die das Skript make_ printerdef von dir verlangte, in den Standort der Konfigurationsoption path für die [PRINTER$] Share. Du kannst z.B. das Folgende in deine Konfigurationsdatei stellen:

[PRINTER$]
	path = /usr/local/samba/print
	read only = yes
	browsable = no
	guest ok = yes

Die vom Skript make_ printerdef verlangten Dateien liegen typischerweise im Verzeichnis C:\WINDOWS\SYSTEM, obwohl du die folgenden Befehle benützen kannst, genau herauszufinden wo sie sind:

cd C:\WINDOWS
dir 

filename /s

In diesem Fall muss jede Datei in das Verzeichnis /usr/local/samba/print auf dem Sambaserver kopiert werden. Kopiere außerdem die vorher erstellte Datei printers.def auch in diese Share. Sobald du das gemacht hast, bist du fast fertig zum Ausprobieren.

7.1.7.4 Modifiziere die Samba Konfigurationsdatei

Mit dem letzten Schritt musst du die Samba Konfigurationsdatei modifizieren, indem du die folgenden drei Optionen hinzufügst:

  • printer driver

  • printer driver file

  • printer driver location

Die Option printer driver file ist eine globale, die auf die Datei printers.def zeigt; setz diese Option in deine [global] Sektion. Die anderen Optionen sollten in die Printer-Share gestellt werden, für die du die Treiber automatisch konfigurieren willst. Der Wert für printer driver sollte mit der Zeichenkette übereinstimmen, die im Drucker-Wizard auf dem Windows-System auftaucht. Der Wert von printer driver location ist der Pfadname der von dir erstellten PRINTER$ Share, nicht der Unix-Pfadname auf dem Server. Somit kannst du Folgendes verwenden:

[global]
	printer driver file = /usr/local/samba/print/printers.def
[hpdeskjet]
	path = /var/spool/samba/printers
	printable = yes

	printer driver = HP DeskJet 560C Printer
	printer driver location = \\%L\PRINTER$

Nun bist du bereit, es auszutesten. Entferne an dieser Stelle den Windows-Drucker, den du im ersten Schritt "eingerichtet" hast, aus der Liste der Drucker im Drucker-Fenster des Arbeitsplatzes. Wenn Samba dich auffordert, nicht benötigte Dateien zu löschen, so mach das. Diese Dateien werden in Kürze auf dem Client wiederhergestellt, weil sie jetzt auf dem Sambaserver existieren.

7.1.7.5 Testen der Konfiguration

Starte die Sambadämonen neu und suche die Share [hpdeskjet] unter dem Maschinennamen in der Netzwerkumgebung. Wenn du jetzt auf das Drucker-Icon klickst, solltest du den Setup-Prozess in Gang setzen und zum Dialog wie in Figur 7.6 kommen.

Dieser ist anders als der Dialog, den du weiter oben beim Einrichten eines Druckers sahst. Der Dialog fragt dich notwendigerweise, ob du den Treiber akzeptierst, der "bereits installiert" ist - mit anderen Worten, von Samba angeboten wird. Setz fort und behalte den vorhandenen Treiber und drück den Button "Weiter". Jetzt kannst du dem Drucker einen Namen geben und eine Testseite ausdrucken. Wenn es funktioniert, sollte das Setup beendet sein. Du solltest den Vorgang jetzt von jedem Windows-Client aus wiederholen können.

Figur 7.6: Automatisches Konfigurieren des Druckertreibers

Figur 7.6

Previous: 6.6 Logon Scripts Next: 7.2 Drucken auf Windows-Client-Drucker
6.6 Logon Scripts Buch-Index (engl.) 7.2 Drucken auf Windows-Client-Drucker

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.