Home / LinuxUser / 2000 / 08 / The Answer Girl

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Apache Open Office
(80 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Gut gedruckt

The Answer Girl

01.08.2000 Dass der Computeralltag auch unter Linux des Öfteren für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so, wie eigentlich angenommen. Das Answer-Girl im LinuxUser zeigt, wie man mit solchen Problemchen elegant fertig wird.

Im LinuxUser 06/2000 entlockten wir einem SMB-Drucker im Microsoft-Netzwerk an dieser Stelle mit viel Mühe und einem Skript sinnvolle Druckerzeugnisse. Nun mag Unix-verwöhntes Volk jedoch gar nicht einsehen, wieso es ausgerechnet für diesen Drucker eine Ausnahme machen sollte: Alle anderen Drucker lassen sich mit dem lpr-Kommando ansprechen, und nur hier gibt's ein Extraskript?

Tabelle 1: Gängige Druckkommandos unter Linux

lpr -Pdrucker datei druckt datei auf dem Drucker namens drucker aus. Lässt man die Option -Pdrucker weg, landet der Druckjob in der Druckerwarteschlange zum Standarddrucker lp, sofern ein solcher in der /etc/printcap definiert ist.
lpq -Pdrucker zeigt alle Jobs an, die in der Drucker-Queue von drucker auf ihren Ausdruck warten. Ohne -Pdrucker ist wieder die Standardwarteschlange gemeint. Mit lpq erfährt man die Jobnummer eines Druckjobs.
prm -Pdrucker Jobnummer entfernt ("removes") den Druckjob Nr. Jobnummer aus der Warteschlange des druckers bzw. ohne explizite -P-Angabe des Standarddruckers. Gibt man als Jobnummer ein Minus ("-") an, werden alle eigenen Jobs gelöscht.

Wo bleibt der Druckerspool?

Nicht mit uns: Der SMB-Drucker soll eine ebensolche Druckerwarteschlange bekommen, auf die für ihn bestimmte Druckjobs abgelegt und abgearbeitet werden.

Abbildung 1: Welche Art Drucker soll es sein?

Mit Tools wie Red Hats printtool ist man da natürlich fein raus – einfach Parameter eintragen und fertig (Abbildung 1 und 2). Doch auch sonst ist nicht alles verloren: Der Schlüssel zum Druckerglück liegt in einer Datei mit dem schönen Namen /etc/printcap, der unter man printcap auch eine eigene Manpage gewidmet ist.

Abbildung 2: Ob von Hand oder mit printtool – diese Parameter müssen Sie kennen

Glücklicherweise findet sich nur ausgesprochen selten eine völlig leere printcap, und mit Beispieleintrag, zugehöriger Manpage und vielleicht noch [3] bewaffnet, kann es sich nur um Stunden handeln, bis wir etwas Sinnvolles auf die Beine gestellt bekommen.

Was sofort auffällt, ist die Struktur eines Eintrags:

name_1|name_2|...|name_n: \
        :string_option_1=string_wert_1: \
        :[...]: \
        :num_option_x#num_wert_x: \
        :[...]: \
        :bool_option:

In der ersten Zeile werden, mit dem logischen ODER-Zeichen | voneinander abgetrennt, all jene Namen angegeben, unter denen der Drucker mit lpr -PName datei angesprochen werden kann. Ein printcap-Eintrag sollte (u.a.) lp heißen, wenn man auch ohne die -P-Option bei einem Drucker landen will. Der Doppelpunkt : beschließt das Ende der Namensliste und leitet die Aufzählung von Eigenschaften der entsprechenden Druckerwarteschlange ein.

Wie aus der printcap-Manpage ersichtlich, gibt es Charakteristika dreierlei Art: Optionen, die als Wert eine hinter einem Gleichheitszeichen angegebene Zeichenkette (einen "String") verlangen, numerische Werte, die vom Optionsnamen durch # getrennt werden, und Ja/Nein- ("Boolsche") Optionen, die nur dann aufgeführt werden, wenn sie auf "Ja" gesetzt werden sollen: Nicht aufgeschrieben bedeutet hier "woll'n wir nicht".

Jede Option muss links und rechts von : umrahmt werden. In praxi ist jeder printcap-Eintrag schlichtweg eine lange Zeile; der Übersichtlichkeit halber kann man den Zeilenumbruch jedoch mit \ maskieren. Da allerdings jede Option sozusagen nicht über den Tellerrand der eigenen in der Datei stehenden Zeile hinweg schauen kann, muss man in diesem Fall den letzten : noch einmal am Zeilenbeginn wiederholen.

Das große Ganze

Im Wust der ganzen Optionen findet man sich am besten zurecht, wenn man sich überlegt, wie das Drucken eigentlich vonstatten geht. Zunächst nimmt das Programm lpr ("line printer") den Druckauftrag entgegen und bringt ihn in der passenden Druckerwarteschlange unter.

Irgendwann kommt dann der Lineprinter-Dämon lpd daher, schnappt sich den ersten wartenden Job aus der Schlange und bereitet ihn auf den Ausdruck vor. Das, was er da tut, haben wir in Heft 06/2000 selbst von Hand durchexerziert: Wir suchten uns einen Filter, der aus den verschiedenen Formaten, die eine auszudruckende Datei haben kann, das Format macht, das der Drucker versteht – in der Regel PostScript oder PCL.

Außerdem kann der lpd noch ein paar Dinge entscheiden: z.B. ob er die Datei überhaupt ausdrucken will, wenn er sieht, dass sie so groß ist, dass der Drucker auf zwei Stunden komplett beschäftigt wäre. Zum guten Schluss schiebt der lpd dem Drucker die Daten zu, sofern der gerade nichts zu tun hat.

Die Printcap muss demnach folgende Informationen enthalten:

  • den Namen des Druckers,
  • die Gerätedatei, über die er angesprochen werden kann, also den "line printer" selbst: lp=/dev/xxx, wobei xxx für einen lokalen Drucker z.B. die parallele Schnittstelle lp1 sein kann,
  • die Warteschlange, also ein Verzeichnis ("directory"), in dem die Druckjobs "aufgespult" werden: sd=/var/spool/lpd/xxx. Der Name des Druckerspools, xxx, ist Ihrer Fantasie überlassen, sinnvollerweise heißt er in etwa so wie Ihr Drucker,
  • der "Input-" oder Eingabe-Filter, der am Ende das für den Drucker passende Format ausspuckt: if=/pfad/zum/filter und
  • ggf. ein paar Sondereigenschaften wie mx#xxx, wobei xxx die maximale Dateigröße festlegt. Dass diese als Vielfaches eines Kilobytes angegeben wird, bekommt man allerdings erst mit ein wenig Recherche heraus [1,2].
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

572 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 7 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 1 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 0 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...
OpenLDAP Replikation
Ludwig jun. B., 25.04.2012 14:04, 2 Antworten
Hallo, bis jetzt habe ich nur gering Erfahrung mit OpenLDAP. Doch ich muss mich da jetzt einar...