Partnerlinks:
Google

www.linux-club.de/ sehr aktives und kompetentes Board m. Fragen u. Antworten rund um Linux  |  www.linux-board.de/ privates Board m. Fragen u. Antworten rund um Linux  |  meybohm bei viando.de gute Tools - u.a. "Phase 5 / HTML Editor" mein Lieblings-HTML-Editor und "Proton" - guter Texteditor www.meybohm.de  |  Wunsch-Domain schon belegt? Hier finden Sie sie trotzdem!   |  Webhosting beim Testsieger 2007. www.greatnet.de  | 
Host Europe - World Class Internet Hosting
 

  Ein Pinguin-Logo    
news About Me linux referenz tips links downloads kontakt
 
News
About
Linux
Referenz
Tips
  Linux
  Sicherheit
  Perl
  Allround Server
  Fileserver Samba
  HTTP-Server
  Zope-Server
  SQL-Server
  Mail-Server
  Proxy_Server
  FAX-Server
  Netzwerk-Tools
  SMS-Tools
  Postscript
  MS Office
Links
Downloads
Kontakt

Besucher
seit 21.10.2002
 
Mein Gästebuch
 

SAMBA - DER Datei- und Drucker-Server für die Windowswelt (3)

Druckereinrichtung in Samba

1. Allgemeines

1.1. Hintergrundinformationen

Samba kann alle im Linuxsystem eingerichteten lokalen und Netzwerkdrucker für die Nutzung durch die Windows- und andere ins Windowsnetzwerk integrierte -Clients (z.Bsp. Linux-Clients über smbclient) über das "smb-Protokoll" freigeben.

Auszug aus der Doku von "Sernet"

Um Drucker unter Samba zur Verfügung zu stellen, müssen diese von Unix aus ansprechbar sein. Unter Linux mit einem BSD-kompatiblen Drucksystem geschieht dies durch Einträge in der Datei /etc/printcap. Alle Drucker, die dort definiert sind, kann man als Netzwerkdrucker fürWindowsclients freigeben.

Unter Linux ist die Frage der Druckertreiber noch nicht zufriedenstellend gelöst. Druckertreiber unterWindows würde man unter Linux nicht als solche bezeichnen. In der Linuxwelt sind Treiber Softwaremodule, die direkt Hardware wie Netzwerkkarten oder den parallelen Port ansprechen. Druckertreiber im Sinne von Windows sind unter Linux so genannte Filter, die Druckdaten in ein für den Drucker akzeptables Format aufbereiten. Das einheitliche Druckformat unter Linux ist Postscript, das mit dem Programm Ghostscript in viele druckereigene Formate umgewandelt werden kann. Druckertreiber unter Windows gehen vom Windows Metafile-Format aus, und wandeln dies entsprechend um. DasWindows Metafile-Format enthält Aufrufe an die Graphische Komponente vonWindows, das GDI. Wenn man einen Drucker, der über Unix angesprochen wird, von Windows aus nutzen möchte, muß man planen, wo die Aufbereitung in das druckereigene Format geschehen soll. Zwei Wege sind denkbar.

  • Auf den Arbeitsplätzen wird ein generischer Postscripttreiber installiert. Die Clients müssen nicht wissen, welches Druckermodell sich hinter einer Freigabe verbirgt. Die Umwandlung findet auf dem Druckerserver mittels ghostscript statt.
  • Der Druckertreiber reicht die Daten weiter (über "raw"), ohne sie weiter zu behandeln. Auf den Arbeitsplätzen werden für jeden Netzdrucker die korrekten Treiber installiert.
Beide Wege haben Vor- und Nachteile. Im ersten Fall hat man weniger Aufwand mit der Administration auf Clientseite. Man muß den korrekten "Druckertreiber" nur einmal definieren, am Druckerserver. Es gibt aber bei aktuellen Druckern Probleme mit der Bereitstellung von "Druckertreibern" für Linux.

Beim zweitenWeg kann man die bessere Unterstützung der Druckerhersteller für dieWindowsplattformen nutzen. Druckertreiber fürWindows bieten in der Regel die Möglichkeit, Sonderfunktionen wie die Auswahl des Papierschachtes zu nutzen. Dieser erhöhte Komfort zieht jedoch nach sich, daß auf jedem Client der korrekte Druckertreiber installiert ist.

Nutzt eine Windows NT Workstation einen Drucker, der von einem Windows NT Server freigegeben wurde, so gibt es noch die Möglichkeit, die Druckaufbereitung komplett vom NT Server vornehmen zu lassen, und trotzdem sämtliche Komfortfunktionen auf der Workstation zu nutzen. Dazu muß auf der Workstation kein Druckertreiber installiert sein. Diese so genannten EMF-Druckerwarteschlangen kann Samba zur Zeit nicht exportieren. Samba wird dies voraussichtlich auch nicht so schnell ermöglichen, da hierfür große Teile von Windows, nämlich das GDI, auf Sambaseite implementiert werden müßte.

1.2. Grundkonfiguration

Im Abschnitt [global] werden folgende Einträge gemacht:

  • printing = bsd
    Hier wird das benutzte Linux-Drucksystem ausgewählt. Heutzutage gibt es auch immer verbreiteter das etwas kompoliziertere aber modernere Drucksystem "cups".
  • printcap name = /etc/printcap
    Das ist die Datei in der alle verfügbaren Drucker eingetragen sind.
  • load printers = yes
    Damit werden automatisch alle verfügbaren Drucker über das Windowsnetzwerk freigegeben (in Netzwerkumgebung angezeigt).
Der Abschnitt [Printers] ist nur notwendig wenn im Abschnitt [global] "load printers = yes" gesetzt wurde (d.h. alle im Linuxsystem definfierten Drucker angezeigt werden sollen). Hier gibt es folgende Optionen:
  • comment = All Printers
  • browseable = no
    Dieser Eintrag bewirkt, dass die Drucker in der Netzwerkumgebung nicht automatisch angezeigt werden. Man müsste sich explizit mit Angabe der Freigabe damit verbinden: "net use ..."
  • printable = yes
    Zeigt Samba an, dass dies ein Druckershare ist.
  • public = yes
  • writeable = no
  • create mode = 0700

1.3. Nur einzelne Drucker freigeben (Drucker-Shares)

Wenn man nun nur bestimmte Drucker des Linux-Systems den Windows-(smb)-Usern "zeigen" will, entfällt die Angabe load printer = yes in [global] sowie die Sektion [Printer] und man muß für jeden dieser Drucker eine Sektion mit folgenden Angaben erstellen:

[S_500_0]
; Name des Druckers
; wird so in der Netzwerkumgebung angezeigt
   browseable = yes
   printable = yes
   public = yes
   read only = yes
   create mode = 0700
   directory = /tmp
   comment = Canon S500 auf RAW
; Hier werden die Druckkommandos spezifiziert
   print command = lpr -r -Praw %s
Verfeinerung um Ausgabe einer "Win-POPUP-Meldung" an den User:
; das gleiche nochmal, aber Logging in eine extra Datei,
; Drucken des Druckauftrages und Ausgabe einer
; Winpopup-Meldung an den user mit Angaben über den
; ausgeführten Druckauftrag
;-------------------------------------------------------------
; --> Vereinfachung (ohne "cat") und Fehlerbeseitigung (jetzt %m
;     statt %u, da funktionierts mit allen PC-Namen)
;     auf Hinweis von
;     Andreas Marc Klingler - nochmal Danke!
;-------------------------------------------------------------
; (natürlich alles in einer Zeile schreiben!!!)
;
   print command = echo %T Drucke %s von User %u auf %L/raw >>\
                    /var/log/samba/print.%L.raw.log; \
                    /usr/bin/lpr -r -Praw %s; echo %T Drucke \
                    Auftrag %u-%s auf %L/raw | smbclient -M %m

   lpq command = lpq -Praw
   lprm command = lprm -Praw %j
   printer driver = Canon S500
   printer driver location = \\%L\Printer$\canon\s500

1.4. PDF's Netzwerkweit erzeugen

Mit den folgenden Parametern erzeugt ihr einen speziellen Drucker in Samba. Damit ist es möglich allein mit Hilfe eines Standard-Laserdrucker-Treibers von Windows aus allen Windows-Anwendungen heraus PDF-Dateien zu erzeugen. Diese landen dann in dem voreingestellten Verzeichnis (bei mir in einem Verzeichnis "pdf-write" unterhalb von [all].

; mit diesem Drucker kann man PDF's erzeugen indem man
; einfach eine Windowsdatei (Word, Excel oder
; irgendetwas anderes) über einen Post-Script-Druckertreiber
; (am einfachsten Apple LaserWriter - ist standardmäßig
; bei Windows dabei) der auf diesen Netzwerkdrucker
; eingestellt ist, ausdruckt. Man findet diese Datei dann
; in dem Verzeichnis welches man bei Print-Command einstellt.
[pdfwrite]
    comment = PDF erzeugen
    browsable = yes
    printable = yes
    public = yes
    directory = /tmp/pdfwrite
    create mode = 0666
;   Das folgende "print command" bitte in einer Zeile schreiben
;   Nach "%s" befindet sich ein Leerzeichen
    print command = "/usr/bin/ps2pdf /tmp/pdfwrite/%u-%s
    /win_home/daten/all/pdf-write/%s.pdf; rm %s"
    map to guest = nobody
    printer driver = Apple LaserWriter Pro 810

1.5. Automatische Installation von Druckertreibern (für Win9X)

Wie ihr bestimmt schon bemerkt habt, finden sich noch weitere Angaben in meiner "smb.conf". Diese Angaben dienen dazu, eine automatische Druckerinstallation auf den Win9x-Clients durchführen zu können.

  • in [global] steht printer driver file = ...
    Das soll (bis samba Vers. 2.2.1) zur automatischen Installation von Druckertreibern dienen.
  • im Drucker-Share steht printer name = ...
    Hier wird die genaue Bezeichnung eingetragen, die ihr beim Auswahldialog unter Windows erhaltet, wenn ihr euren Drucker (lokal) installiert. Damit wissen die Clients beim Installieren genau welcher Druckertreiber genommen werden soll
Dazu muß (bis Vers. 2.2.1) ein Share [PRINTER$] erzeugt werden. In diesem Share werden die aufbereiteten Druckertreiber hinterlegt.
; hier ein Verzeichnis für zentrale Drucker-Treiber-Installation
; diese Konfig ändert sich mit Samba 2.2.2 auf "[print$]" und
; die Optionen: printer 'driver file', 'printer driver' und
; 'printer driver location' werden ab V. 2.2.2 nicht mehr
; unterstützt und sollten nicht mehr verwendet werden!!!
; Folgende Einträge ab V. 2.2.2:
;[print$]
;   path = /win_home/printers/%a
;   guest ok = yes
;   read only = yes
;   browseable = yes
[Printer$]
   path = /win_home/printers/%a
   read only = yes
   browseable = no
   guest ok = yes
Die Druckertreiber erzeugt man Linux-gerecht indem man die Dateien:
C:\WINDOWS\INF\MSPRINT.INF
C:\WINDOWS\INF\MSPRINT2.INF
C:\WINDOWS\INF\MSPRINT3.INF
C:\WINDOWS\INF\MSPRINT4.INF
in ein Verzeichnis auf dem Linux-Server kopiert. Dieses lege ich für jeden Drucker unterhalb von PRINTER$ an (das ist das "Arbeitsverzeichnis"). Jetzt in dieses Verzeichnis wechseln.

Ausgehend von der Annahme, dass der zu installierende Drucker ein "HP DeskJet 560C Printer" ist führt man folgende Befehle aus (Drucker-Name genau so schreiben, wie er im Windows-Dialog zur Drucker-Installation angezeigt wird):

$grep "HP DeskJet 560C Printer" MSPRINT.INF MSPRINT2.INF \
MSPRINT3.INF MSPRINT4.INF
MSPRINT3.INF: "HP DeskJet 560C Printer"=DESKJETC.DRV,\
HP_DeskJet_ ...
(Suche in welcher Datei die Installations-Angaben zum Drucker stehen)

Mittels make_printerdef ... ... wird im aktuellen Verzeichnis die Datei "printers.def" erzeugt.
$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
Die Dateinamen für die benötigten Dateien sollten nun notiert werden, um sie aus der Windows- Installation in das schon vorher im Share [PRINTER$] festgelegte Verzeichnis zu kopieren. In diesem Verzeichnis stehen dann alle Dateien von allen Druckern.

Die noch im "Arbeitsverzeichnis" liegende Datei "printers.def" muss noch in "PRINTER$" kopiert werden. Wenn aber schon eine solche Datei dort existiert hängt man einfach den Inhalt der neuen printers.def folgendermaßen an die schon exitierende an:

cat printers.def >> /win_home/printers/printers.def

Nach einem "Restart" von Samba mittels "rcsmb restart" (SuSE 7.2) sollten die definierten Drucker in der Netzwerkumgebung von Windows erscheinen. Wenn man nun auf einen solchen Drucker doppelklickt kommt die Meldung, dass man diesen vor Benutzung erst installieren muß. Auf die Frage ob er nun installiert werden soll antwortet man mit "ja" und alles andere müßte von selbst funktionieren (Bei mir auf Arbeit findet er die Treiber nicht ganz sauber und verlangt die Windows-CD, da gebe ich in dem Datei-Feld einfach folgendes ein "\\lin-server\printer$", dann läuft es.

   
SAMBA (1)
Intro
Allgemeines
Installation
Konfiguration
SAMBA (2)
Domain Controller
Startskript
Winpopup
SAMBA (3)
=> Drucker
Allgemeines
Grundkonfiguration
Druckershares
WinPOPUP-Nachricht
PDF-Ausdrucke
Drucker automatisch installieren
SAMBA (4)
=> SuSE 8.1
Unterschiede
Funktionen
Änderungen
Druckertreiber
Datums-Skript
SAMBA (5)
=> Hilfsprogramme
Winpopup
smb-wall.pl
smb-user-wall.pl
Probleme
Lösung
SAMBA (6)
=> Novell-like
Unterschiede
Novell Samba
Lösung
Verzeichnisstruktur
Fehlerquellen
 
©  09.09.2009  Heiko Teichmeier - Glauchau/Sa.