Home / LinuxUser / 2000 / 08 / The Answer Girl

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

War doch klar...
(233 Punkte bei 16 Stimmen)
Re: War doch klar...
(162 Punkte bei 6 Stimmen)
Re: Skype für 64-Bit-Prozessor u. Suse 12.1
(161 Punkte bei 4 Stimmen)
Kubuntu verliert Finanzierung
(130 Punkte bei 4 Stimmen)
Offen fürs Geschäft
(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

454 Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 03/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

Duden Korrektor unter 64-Bit
Duden Korrektor unter 64-Bit
Tim Schürmann, 06.02.2012 10:36, 0 Kommentare

Der Duden Korrektor bietet eine äußerst nützliche Rechtschreib- und Grammatikkorrektur für LibreOffice und bringt in der aktuellen Version 8 e...

Aktuelle Fragen

Ubuntu 11.10 Compiz 3D Cube flackern
Moritz Obenauer, 12.02.2012 12:25, 0 Antworten
Hallo! Ich habe Ubuntu 11.10 mit Unity und den Compiz 3D Cube ein gerichtet. Er funktioniert...
Suse 12.1 Bootvorgang bleibt seit Update stehen
Wimpy *, 12.02.2012 09:22, 2 Antworten
Seit Update auf Kernel 3.1.9-1.4-desktop i686 bleibt der Bootvorgang stehen. Es erscheint der gr...
N24 Stick (Huawei E173) und Ubuntu 11.04
Patrick Obenauer, 11.02.2012 11:54, 1 Antworten
Hallo zusammen! Ich benutze einen alten Laptop, der mit Ubuntu 11.04 flott und problemlos läuft....
Wie kann man beim Einsatz von Compiz die Fenster-Dekoration einstellen?
GoaSkin , 10.02.2012 20:12, 0 Antworten
Hallo, ich nutze Linux Mint mit dem Gnome-Derivat Mate. Da die Distribution Compiz nicht autom...
rndc reload zone - failed bad zone
Ludwig jun. B., 06.02.2012 16:08, 2 Antworten
Schönen guten Tag, ich habe folgendes Problem. Immer wenn ich folgendes Kommando ausführen bek...