Zu Hauptinhalt springen

Drucken

Drucken unter Linux (und MacOS X) mit CUPS

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).

  • Administriert wird CUPS mit einem Browser über: localhost:631
  • Allgemeines zum Drucken an der Uni-Regensburg
  • Drucken an einen lokalen per USB angeschlossenen Drucker:
    Unter Linux wird mittlerweile ein lokal angeschlossener USB-Drucker automatisch konfiguriert und eingerichtet. Erkennbar ist ein solcher Drucker an der DeviceURI des Druckers die mit "usb://..." oder "hp:/" beginnt, im Webinterface oder mit "lpstat -v"
  • Drucken an einen Netzwerkdrucker (per TCP/IP direkt auf den Drucker)
    Erkennbar ist ein solcher Drucker an der DeviceURI des Druckers die mit "socket://..."   beginnt, im Webinterface oder mit "lpstat -v"
  • Drucken an einen zentralen Netzwerkdrucker (über die zentralen iPrint Server)
    Erkennbar ist ein solcher Drucker an der DeviceURI des Druckers die mit "iprint://..." oder "ipp://..."   beginnt, im Webinterface oder mit "lpstat -v"


Drucken mit CUPS auf der Kommandozeile

siehe auch: CUPS-Dokumentation

Auflisten bekannter Drucker; Defaultdrucker

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 

Drucken aus der Konsole

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

Informationen über Druckaufträge

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

Löschen von (eigenen) Druckaufträgen

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
 

Wandlung von ASCII-Text zu PostScript

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.

IO-Redirection

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)


Architektur

Quelle: http://en.wikipedia.org/wiki/CUPS (abgewandelt)


Administration

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:

  • Druckername (Queuename): Dieser Name erscheint in den Anwendungen. Namen ohne Leerzeichen werden empfohlen.
  • Beschreibung / Ort: frei wählbare Bezeichnungen
  • Driver: Dies ist eine PostScript Printer Description Textdatei (PPD), die nach Installation des Druckers unter /etc/cups/ppd/.ppd liegt. In dieser Datei sind die Druckerspezifischen Optionen definiert, und die rechnerbezogenen Standardeinstellungen werden hier abgespeichert. Daneben wird hier der Druckertreiber referenziert. Falls keiner angegeben ist wird Postscript verwendet.
  • Verbindung (Connection,DeviceURI ) für lokale Drucker: 
    • Drucker am parallelen Port:
      z.B. parallel:/dev/lp0
    • USB-Drucker
      z.B. usb://HP/LaserJet%20P2055dn?serial=M7208JT
      z.B. hp:/usb/HP_LaserJet_P2055?serial=M7208JT (HP-USB-Treiber)
    • in Datei:
      z.B. file://dev/null
  • Verbindung (Connection,DeviceURI ) für Netzwerkdrucker:
    • Socket (Das AppSocket protocol ist das einfachste, schnellste, und im allgemeinen das zuverlässigste Netzwerkprotokoll das für Drucker verwendet wird.):
      z.B. socket://hostname:9100
    • IPP-Druck (synonyme: ipp,ipps,http,https). Dies wird CUPS-Intern verwendet, als auch zur Weiterleitung an andere CUPS/iPrint-Druckserver
      z.B. ipp://hostname:631/ipp/queue
    • Samba-Druck zu Windows Rechner:
      z.B. smb://smb.example.com/printer
    • Druck zu iPrint-Server:
      z.B. iprint://gutenberg1.uni-regensburg.de/ipp/rzdrfarbe100g

Konfigurations-, Log- und Systemdateien

/etc/cups/cupsd.conf Zentrale Konfiguration des Cupsservers
/etc/cups/printers.conf Hier stehen die installierten Drucker mit Optionen
/etc/cups/ppd/.ppd Druckerbeschreibung mit standard Druckereinstellungen

/var/log/cups/access_log
/var/log/cups/error_log
/var/log/cups/page_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 )

iPrint-Integration in CUPS und lokale Konfiguration:

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:

  • Passwortabfrage ist pro Drucker, nicht einmal an allen Druckern aller iPrint-Servern (eines NDS-Baums).
  • ipp versucht bei abgelaufenem Passwort je Drucker 6 mal das falsche Passwort -> Account wird wegen zu vieler falscher Passörter vorübergehend gesperrt.
  • Die Passwortabfrage muss vom Client-Programm schon erfolgen. Nicht alle Programme (Java-Print, xmgrace, Acrobat Reader) unterstützen dies.

Lokale Konfiguration (Standard Einstellungen) eines iPrint-Druckers:

  • Bei der Installation eines iPrint-Druckers wird vom iPrint-Server eine Drucker-Beschreibung (PPD) mitgeliefert, die schon Default Konfigurationen beinhaltet. Diese Defaultkonfiguration kann auf Anfrage im RZ geändert werden (wenn für alle Rechner interessant).
  • Wie auch bei einem lokaler Drucker können auch bei einem iPrint-Drucker die standard Einstellungen angepasst werden (z.B. Duplex). Einfach im Webinterface: Printers -> Druckername -> Administration/Set Default Options


  1. Universität

Hilfe & Support

Servicedesk

Anfrage erstellen

+49 941 943-5555


Öffnungszeiten

Mo-Do: 8.00 bis 17.00 Uhr

Fr: 8.00 bis 14.00 Uhr

Raum: RZ 0.02