Drucken unter Linux

BSD-Druck-System: lpd

"Line Printer Daemon". Zuständig für das Ausdrucken, Queueing.

/etc/printcap

Für jeden Drucker steht eine Zeile in /etc/printcap. Einzelne Elemente durch Doppelpunkt : getrennt. Bei mehrzeiligen Einträgen, obere Zeile durch Backslash \ abschließen und weitere Zeilen einrücken.

Namensangabe: Aliasnamen durch Pipe-Symbol | trennen, erster Name ist der Hauptname, letzter Name vollständiger Name.

lp-Drucker: Ein Drucker muss "lp" heißen. Das ist dann der Standard-Drucker.

Beispiel

hp|lp|HP LaserJet 4L:sh:sd=/usr/spool/lp1:lp=/dev/lp1:sf:
dj|HP DeskJet 500:sh:sd=/usr/spool/lp2:lp=/dev/lp2:sf:
hp2100|HP LaserJet 2100:sh:sf:lp=:rm=bud:rp=raw:sd=/usr/spool/lp3:

Anlegen des Spooling-Verzeichnisses

mkdir /usr/spool/lp2
chown lp /usr/spool/lp2
chgrp lp usr/spool/lp2
chmod 770 usr/spool/lp2

Optionen

Die meistens benutzten Optionen sind in der "Gängig"-Spalte markiert.

Gängig Option Funktion Beispiel
  af=<dateiname> Name der Abrechnungsdatei für Accounting  
  ff=<zeichenkette> Zeichenkette für Seitenvorschub  
  lf=<dateiname> Dateiname des Log-Files lf=/usr/spool/lp1/log.log
  lo=<dateiname> Dateiname des Lock-Files  
ja lp=<device-name> Name des Drucker-Devices. Muss für Netzwerk-Drucker leer sein (lp=) lp=/dev/lp1
  mc#<anzahl> Maximale Anzahl Kopien eines Druckjobs  
ja mx#<anzahl> Maximal zu kopierende Größe eines Druckjobs in Blocks. mx#0 = unbegrenzt mx#0
  pl#<anzahl> Maximale Zeilenanzahl einer Druckseite für Zeilendrucker  
  pw#<anzahl> Maximale Spaltenanzahl einer Druckseite für Zeilendrucker  
  px#<anzahl> Maximale Breite einer Druckseite in Pixel  
  py#<anzahl> Maximale Höhe einer Druckseite in Pixel  
  rg=<gruppenname> Benutzergruppe, deren Mitglieder den Drucker benutzen dürfen  
ja rm=<hostname> Hostname des Remote-Druck-Servers rm=elayne
ja rp=<druckername> Druckername des anzusprechenden Druckers auf dem Remote-Druck-Server rp=hplj
ja sd=<verzeichnis> Name des Spooling-Directory sd=/usr/spool/lp1
(Siehe auch oben: "Anlegen des Spooling-Verzeichnisses")
  st=<dateiname> Name der Status-Datei. Wird im Spool-Verzeichnis angelegt.  
  tr=<zeichenkette> Zeichenkette, die nach Abarbeitung der letzten Spool-Datei einer Queue ausgegeben wird (Trailer)  
  hl Header Page Last: Wenn vorhanden, wird die Banner-Page nach dem Druckjob ausgegeben  
  rs Restricted: Wenn vorhanden, dürfen nur die lokalen Benutzer den Drucker benutzen  
  rw Read/Write: Drucker zum Lesen und Schreiben öffnen  
  sb Short Banner: Verkürzt das Banner auf eine einzige Zeile  
  sc Suppress Copy: Mehrfachausdruck eines Dokuments unterbinden  
ja sf Suppress Feed: Unterdrückt den Formfeed am Ende eines Druckjobs sf
ja sh Suppress Header: Unterdrückt den Ausdruck der Header- bzw. Banner-Seite sh
ja if=<filterprogramm> Filterprogramm. Erwartet Eingabe auf STDIN, die STDOUT-Ausgabe des Filterprogramms wird an den Drucker gesendet  

lpr: Drucken

Mit dem lpr-Programm können Daten an den Drucker gesendet werden. lpr sendet alles, was auf STDIN eingeht auf den Drucker

lpr < filetoprint
lpr -P hp2100 < filetoprint
cat filetoprint | lpr -P ps

Mit der Option -P kann der anzusteuernde Drucker angegeben werden. Default ist "lp".

lpq: Prüfen der Druck-Queue

lpq
lpq -P hp2100

Listet die Druck-Queue auf.

lprm: Entfernen von Jobs aus der Queue

Angabe der per lpq ermittelten Job-Nummer erforderlich

lprm 13
lprm -P ps 27

Da lprm die Dateinamen der entfernten Jobs anzeigt, ist eine weitere Überprüfung des Erfolgs mit lpq erforderlich.

lpc: Drucker-Administration

Komplettes Verwaltungstool: Druckjobs abbrechen/löschen, Queues anhalten/starten, Daemon anhalten/neu starten, Statusinformationen abrufen

Hilfe kann mit ? angefordert werden.

Druck-Filter

Per "if"-Eintrag in der printcap-Datei kann vor das Drucken ein Filter gesetzt werden. Dies ist ein Programm, das den Druckjob auf STDIN erhält und dessen STDOUT-Ausgabe an den Drucker gesendet wird.

Der einfachste Filter, der die Daten einfach 1:1 weiter leitet, sieht so aus:

#!/bin/sh
cat

Rechte: Ein solches Filterprogramm benötigt Ausführungsrechte (555).

Drucken im Netzwerk

/etc/hosts.lpd

In dieser Datei werden die Hosts eingetragen, die auf die Drucker eines lpd zugreifen dürfen.

/etc/printcap

Samba

Siehe gesondertes Samba-File.


04.12.1999, Stefan Heymann