Das Common Unix Printing System (CUPS) ist ein freies Drucksystem, ein Daemon, der das Drucken unter den verschiedenen unixoiden Betriebssystemen ermöglicht. CUPS besteht aus einer Client-Server-Architektur; das heißt, das Programm ist in einen Druck-Client und einen Druck-Server aufgeteilt: Der Druck-Client schickt die Druckaufträge (z.B. lpr, gnome-print, kde-print), der Druck-Server (cupsd) erledigt das Drucken, oder schickt es zu einem weiteren Druckserver. Es wird das Internet Printing Protocol (IPP) verwendet (Port 631).
siehe auch: CUPS-Dokumentation
Welche Drucker Ihrem Rechner bekannt sind, erfahren Sie mit dem Befehl lpstat (line printer status). Das heißt aber noch lange nicht, dass Sie auf all diese Drucker auch zugreifen können...
phy314:~> lpstat -p
printer rcipprphy3 now printing rcipprphy3-4. enabled since Do 17 Okt
printer rzdrumwelt80g is idle. enabled since Mo 14 Okt
[...]
Die Druckkostenabrechnung erfolgt über die iPrint-Server des Rechenzentrums. Ausdrucken aus Applikationen wie z.B. aus einem Browser heraus ist selbsterläuternd. Der Drucker im Linux-CIP-Pool Physik heißt rcipprphy3. Normalerweise sollte dieser Drucker auch als sog. Defaultdrucker eingetragen sein; die Eingabe des expliziten Druckernamens erübrigt sich dann bei allen folgenden Befehlen. Schauen wir mal, ob z.Z. ein Defaultdrucker existiert:
phy314:~> lpstat -d system default destination: rcipprphy3
rz500:~> lpstat -d kein System-Standardzielort
Der Befehl lp (line printer) druckt Dateien (in der Regel PostScript-Dateien).
phy314:~> lp datei.ps # Defaultdrucker
phy314:~> lp -d rzdrumwelt80g datei.ps # beliebiger Drucker
Der Befehl lpq (line printer query) informiert über Druckjobs.
phy314:~> lpq # Defaultdrucker
rcipprphy3 ist bereit keine Einträge
phy314:~> lpq -P rzdrumwelt80g # beliebiger Drucker
rzdrumwelt80g ist bereit
Rank Owner Job File(s) Total Size
active wuf04055 237 test17.ps 756320 bytes
Mit dem Befehl cancel können Sie eigene Druckaufträge löschen.
phy314:~> lp -d rzdrumwelt80g unsinn.ps
request id is rzdrumwelt80g-244 (1 file(s))
phy314:~> lpq -P rzdrumwelt80g
Rank Owner Job File(s) Total Size
active wuf04055 244 test17.ps 756320 bytes
phy314:~> cancel rzdrumwelt80g-244
ASCII-Texte (z.B. den Quellcode Ihres Programms, das Sie gerade schreiben) können Sie mittels a2ps auf einem PostScript-Drucker ausdrucken. Wenn Sie mit dem Parameter -o eine Ausgabedatei angeben, wird das erzeugte PostScript stattdessen in der angegebenen Datei gespeichert.
phy314:~> a2ps -Ppf -R -1 demo.php # drucken
phy314:~> a2ps -Ppf -R -1 -o demo.ps demo.php # speichern
Problem: a2ps kennt nicht die aktuelle Zeichenkodierung UTF 8, nur die alte ISO 8859-1. Unser aktuelles Unix-System benutzt aber schon UTF 8. Umlaute werden daher durch a2ps zerstört:
a2ps texte.fw
Geräte wie z.B. DIN A0 - Plotter und auch größere Drucker bedürfen regelmäßiger Pflege
iconv --to-code=ISO-8859-1 --from-code=UTF-8 texte.fw | a2ps
Geräte wie z.B. DIN A0 - Plotter und auch größere Drucker bedürfen regelmäßiger Pflege
Sie haben hier die sog. Pipe | gesehen: der Output eines Befehls (hier iconv zum Konvertieren von Text) wird als Input eines anderen (hier a2ps) genutzt.
ls -l > testfile
# Listung des aktuellen Directories nach testfile
ls -l / >> testfile # Anhängen an das File
sort < inputfile # Lese aus einer Datei
cat inputfile | sort # Die Pipe '|' sendet die Ausgabe des
# ersten Programmes direkt an das zweite;
# sort inputfile geht aber auch!
cat inputfile | tee ./outputfile # tee schreibt die Eingabe sowohl auf
# die Konsole als
# auch in eine Datei
#(nützlich beim Debuggen von Scripten)
Administriert wird CUPS mit einem Browser über: http://localhost:631 Dieses Interface ist auf allen Linux-Distributionen gleich, ebenso auf Mac OS X. Daneben gibt es noch Desktop-integrierte Administrationsprogramme oder das Editieren der Konfigurationsdateien.
Konfiguration eines Druckers:
/etc/cups/cupsd.conf | Zentrale Konfiguration des Cupsservers |
/etc/cups/printers.conf | Hier stehen die installierten Drucker mit Optionen |
/etc/cups/ppd/ | Druckerbeschreibung mit standard Druckereinstellungen |
/var/log/cups/access_log | Log Dateien |
/usr/lib/cups/backend/ | Cups-Backend Dateien (z.B. socket oder iprint) |
/usr/lib/cups/filter/ | Cups-Filter (z.B. pdftops oder texttops ) |
verfügbare iPrint-Drucker an der Uni-Regensburg und iPrint-Client.
Bei der Installation des iPrint-Client ein zusätzliches Backend in den lokalen CUPS-Server installiert. Das lokale Cups wird weiterhin verwendet, nur für die "iPrint-Drucker" wird ein anderes Backend für den Transport zum iPrint-Server verwendet. Daneben wird beim Login ein kleiner Process (iprint-listener) gestartet, der die Passwort-Abfrage erledigt (siehe Architektur).
Warum iPrint Client: im Prinzip wird das iprint-Backend nicht zwingend benötigt, jedoch hat das Altenative ipp-Backend fogende Nachteile: