http://www.cups.org/images/cups-tiny.gif

1. CUPS ist das "Common Unix Printing System" - darüber wird gedruckt

CUPS ist das "Common Unix Printing System" und wird von sehr vielen Unixderivaten unterstützt. Es eignet sich gut für den Druck über das Netzwerk (auch für Windowsclients) und unterstützt eine Vielzahl von Druckern. Die Konfiguration erfolgt über ein einfach zu bedienendes Webfrontend.

CUPS unterstützt außerdem das Internet Printing Protocol (IPP), was die Zusammenarbeit von PrintServern und Clients wesentlich verbessert.

CUPS versteht auch praktisch alle Protokolle zum Drucken auf lokalen Druckern und Netzwerkdruckern: LPD, IPP, HTTP, !JetDirect, Appletalk und SMB.

CUPS wurde von der kleinen Firma Easy Software Products, die mittlerweile von Apple gekauft wurde, entwickelt und unter GPL gestellt.

Gedruckt werden kann erst, wenn cups gestartet wurde!

Debian 3.1: als root mit ps -A | grep cupsys nachsehen, ob cups schon gestartet wurde. Start:

/etc/init.d/cupsys start

2. Tipps und Tricks

MacOSX 10.2 (Jaguar) benutzt CUPS zum Drucken. Zur Verwaltung gibt es neben der Web-Oberfläche auch ein grafisches Tool namens Print Center. Wenn man auf einem anderen Server drucken will, sollte dort am besten Version 1.1.16 installiert sein, frühere Versionen machen u.U. mit den Sonderzeichen Probleme -- dann hat man im Ausdruck nur Kästchen statt Umlauten :( .

Beim Klicken, um Drucker zuzufügen, sollte man die Wahltaste (Alt) gedrückt halten, um auch wirklich alle verfügbaren Modelle zur Auswahl zu haben. Oder man versucht es gleich über den Webbrowser.

Ab Mac OS 10.3 befindet sich auf der Auslieferungs-CD auch das Treiberpaket Gimp-Print gleich mitgeliefert, welches man von dort aus nachinstallieren kann.

Auch auf anderen Betriebssystemen kann man die Gimp-Print-Treiber verwenden, um Drucker zum Laufen zu bekommen, oder bei der Firma Easy Software Products, die CUPS entwickelte, ESP Print Pro erwerben. Damit unterstützt man sicher eine interessante Firma.

Wer einen Router mit Druckeranschluss hat sollte als Adresse in seiner printers.conf vielleicht folgenden Eintrag probieren:

DeviceURI lpd://192.168.0.1/lpt1

Wer einen Netzwerkdrucker ansprechen möchte (also kein Drucker der an einem Server hängt und von diesem Server mit Daten versorgt wird, sondern ein Drucker der eine eigene IP besitzt, sollte sich die Datei /etc/cups/cupsd.conf zur Gemüte führen und folgenden Eintrag hinterlassen

<Location />
Encryption IfRequested
Satisfy All
Order deny,allow
Deny From All
Allow From 127.0.0.1
Allow From @local
</Location>

In dem Falle heißt das, alle lokalen Benutzer dürfen drucken sowie alle Benutzer, die aus dem Bereich meines lokalen Netzes stammen. Selbstverständlich kann man das auch noch viel feiner einstellen, aber man muss es ja auch nicht gleich übertreiben :)

OffeneFrage: Wozu der Eintrag für das lokale Netz? Antwort: damit werden alle Drucker diese CUPS-Servers für andere Rechner im LAN per IPP freigegeben.

2.1. Browsing

Eines der genialsten Features von CUPS ist das Browsing. Das heißt, dass in einem Netzwerk nur auf dem Server die vorhandenen Drucker normal eingetragen sind; die Clients holen sich automatisch die Druckerinformationen und benötigen keinen eigenen Treiber!

Einrichten: Auf dem Server und auf allen Clients wird in /etc/cups/cupsd.conf Browsing eingeschaltet, etwa so:

Browsing On
BrowseProtocols cups
BrowseAddress 10.10.10.255    # hier eigene Broadcast-Adresse eintragen

Mehr muss man im Normalfall gar nicht tun! Auf den Clients muss zwar der cupsd laufen, aber man braucht keine Treiberpakete.

2.2. Vorsicht bei Proxy Einstellungen im System

Selbst auf einem Einplatzsystem ist die Anzeige von Printjobs o.ä. teilweise nicht möglich, wenn z.B. der Proxy oder ein Admin-Client aufs Netzwerkdevice gebunden ist und cupsd nur von localhost (127.0.0.1) den Zugriff erlaubt.

Da CUPS auf IPP (und damit auf HTTP) basiert, benutzt cupsd beim Drucken auf Drucker im Netzwerk den im Environment eingestellten Proxy. Wenn der Zugriff auf diese Drucker auf bestimmte IPs eingeschränkt wurde, kann das dazu führen, dass die Drucker durch das Broadcasting oder direktes Polling zwar sichtbar sind, aber trotzdem nicht gedruckt werden kann, da dies dem dazu verwendeten Proxy nicht gestattet ist.

Abhilfe: Auch die numerische IP des Druckerservers in die Liste der no-proxy-Domainnamen eintragen.

Frage: Oder existiert doch eine Konfigurationsmöglichkeit dazu in cupsd.conf?

2.3. CUPS und Windows

2.3.1. SMB-Backend

Mit CUPS kann man auch einen Drucker ansprechen, der lokal an einem Windows-Rechner hängt und dort freigegeben ist. Dazu benötigt man einen Benutzer auf dem Windows-Rechner, der den Drucker benutzen darf. Anschließend trägt man im Web-Frontend einen neuen Drucker ein. Bei "Device" wählt man "Windows printer via SAMBA", die URL wird folgendermaßen eingegeben:

smb://benutzer:passwort@arbeitsgruppe/hostname/freigabe

In heterogenen Netzwerken ist das eine praktische Funktion, die unter Umständen sogar den Kauf eines externen Printservers erspart.

2.3.2. Von Windows auf CUPS drucken

siehe /MultiPlattformPrintServer

2.4. Erzeugen von PDF-Dateien

Eine neuere und v.a. in größeren Netzwerken sehr elegante Lösung ist Alambic. Dabei werden die Druckaufträge in PDF gewandelt und dann dem Nutzer per Mail zugeschickt. Alternativ werden sie auf einem WebServer zwischengespeichert, von wo sie der Nutzer selbst abholt.

2.5. Konfiguration per Browser

CUPS lässt sich per Browser administrieren: http://localhost:631

2.6. Weitere Konfigurations- Drucktools

Neben der Möglichkeit CUPS über den Browser anzusprechen existieren auch noch weitere grafische Oberflächen:

Diese Programme sind in den meisten Distributionen enthalten.

2.7. "raw"-Drucken mit Samba und CUPS unter Debian

# /etc/samba/smb.conf:
printing = cups
printcap = cups

Tja und leider sind als Defaults 2 Dateien in /etc/cups nicht ganz richtig - man muss 'lediglich' jeweils ein Kommentarzeichen "#" entfernen:

# /etc/cups/mime.convs ganz unten:
# Raw filter...
#
# Uncomment the following filter and the application/octet-stream type
# in mime.types to allow printing of arbitrary files without the -oraw
# option.
#
application/octet-stream        application/vnd.cups-raw        0       -

# /etc/cups/mime.types ganz unten:
# Raw print file support...
#
# Uncomment the following type and the application/octet-stream
# filter line in mime.convs to allow raw file printing without the
# -oraw option.
#
application/octet-stream

2.8. Probleme mit der Anmeldung beim Webfrontend

Unter Umständen muss man noch einen Benutzer für das Webfrontend anlegen, sonst bekommt man keinen Zugang:

lppasswd -g sys -a root

2.9. Achtung Feature

CUPS macht page accounting und fügt hierzu Änderungen in den Postscript Code der an ghostscript gegeben wird. Das führt auf manchen Versionen/Druckern zur Ausgabe einer leeren Seite *vor* dem eigentlichen Job.

siehe http://portal.suse.com/sdb/de/2002/11/jsmeix_print-81-cups-formfeed.html

2.10. Jobverwaltung für lokale Nutzer

Damit alle lokal angemeldeten Benutzer auf die Jobs eines Rechners zugreifen (anhalten/löschen) können sollte die Sektion <Location /jobs> in der Datei /etc/cups/cupsd.conf so aussehen:

<Location /jobs>
Order Deny,Allow
Deny From All
Allow From localhost
</Location>

3. Fragen+Antworten

3.1. Wo finde ich die PPD Spezifikation?

3.2. Wo finde ich die PPD Erweiterungen von Cups?

Hier: http://cups.org/documentation.php/doc-1.4/spec-ppd.html

3.3. Accountmanagement für Sharp Kopierer ermöglichen

Für Sharp1-Großkopierer benötigt man in größeren Umgebungen die Möglichkeit beim Drucken ein Benutzerkonto anzugeben, welches z.B. für Abrechnung benutzt wird.

Hier eine kurze Anleitung, wie das für Sharp Modelle ermöglicht wird. Getestet wurde dies an den Modellen MX-M503N und MX-5000N es sollte jedoch auch für andere Modelle funktionieren.

Die Installation des Druckers ist ohne Schwierigkeiten dadurch möglich, dass bei der Installation über http://localhost:631/ eine passende PPD aus dem bei Sharp herunterladbaren Archiv übergeben wird.

Nach der Installation ist diese PPD unter dem Namen des Druckers im Verzeichnis /etc/cups/ppd/ anzupassen. Dazu sind root-Rechte notwendig.

Nehmen wir an der Kopierer heißt Farbkopierer, dann ist in die Datei /etc/cups/ppd/Farbkopierer.ppd zwischen den Zeilen

*JCLBegin: "<1B>%-12345X@PJL JOB<0A>"

und

folgender Abschnitt einzufügen:

*% ========================================================
*JCLOpenUI *JCLAccountnumber/Abrechnungskonto: PickOne
*OrderDependency: 10 JCLSetup *JCLAccountnumber
*DefaultJCLAccountnumber: None
*JCLAccountnumber None/Ohne: ""
*JCLCloseUI: *JCLAccountnumber
*CustomJCLAccountnumber True/Eingabe: "@PJL SET ACCOUNTNUMBER = \"\1\"<0A>"
*ParamCustomJCLAccountnumber Code/Nummer: 1 passcode 5 8
*% ========================================================

Zeilen, die mit *% beginnen sind Kommentare und könnten weggelassen werden.

Hiernach steht in der Druckerkonfiguration im JCL -Menü eine Option Abrechnungskonto zur Verfügung, das mit einem Zahlencode gefüllt werden könnte.

3.4. Druckauftrag halten bei Sharp Kopierern ermöglichen

Für Sharp1-Großkopierer/Drucker kann man eine sogenannte Haltefunktion aktivieren.

Damit ist es möglich einen Druckauftrag loszuschicken und erst dann ausdrucken zu lassen, wenn man am Gerät den Druckjob freigibt.

Hier eine kurze Anleitung, wie das für Sharp Modelle ermöglicht wird. Getestet wurde dies an den Modellen MX-M503N und MX-5000N es sollte jedoch auch für andere Modelle funktionieren.

Nehmen wir an der Drucker heißt S-Kopierer, dann ist in die Datei /etc/cups/ppd/S-Kopierer.ppd zwischen den Zeilen

*JCLBegin: "<1B>%-12345X@PJL JOB<0A>"

und

*JCLEnd: "<1B>%-12345X@PJL EOJ<0A><1B>%-12345X"

folgender Abschnitt einzufügen:

*% ========================================================
*JCLOpenUI *JCLHold/Auftrag halten: PickOne
*OrderDependency: 10 JCLSetup *JCLHold
*DefaultJCLHold: Hold
*JCLHold None/Nein: ""
*JCLHold Hold/Ja: "@PJL SET HOLD=STORE<0A>"
*JCLCloseUI: *JCLHold
*% ========================================================

Zeilen, die mit *% beginnen sind Kommentare und könnten weggelassen werden.

Hiernach steht in der Druckerkonfiguration im JCL -Menü eine Option Auftrag halten zur Verfügung.

Unter Windows und MacOS steht eine weitere Möglichkeit zur Verfügung, mit der man den Druckauftrag mit einem Kennwort versehen kann. Sharp bilded jedoch einen Hash des eingegebenen Kennworts. Diese Hashbildung kann jedoch nicht mit Cupsmitteln nachgebildet werden, zumal auch die Hashfunktion nicht bekannt ist.

Für Interessierte seien hier die PJL Komandos gezeigt:

@PJL SET HOLD=STORE
@PJL SET HOLDTYPE=PRIVATE
@PJL SET HOLDKEY="a17acf43dc093fb2768024f2c915db09"

Es sollte ein leichtes sein, die Custom Options von Cups um mit einem Typ SharpHoldHash o.ä. zu erweitern, sobald die Hashfunktion bekannt ist.

==Log Statistikwerkezug?==

KategorieHardwareUnterLinux KategorieAnleitung

Fußnoten:

  1. vermutlich. auch für PJL-fähige Geräte anderer Firmen gültig (1 2)

CommonUnixPrintingSystem (zuletzt geändert am 2010-07-02 15:45:07 durch hippo64)