AA_PO-26465_AnkeVanWyk-123rf.jpg

© Anke van Wyk, 123RF

Mit Shell-Befehlen drucken via Cups

Handarbeit

Die meisten Nutzer drucken Dokumente aus einer Anwendung mit grafischer Oberfläche heraus. In einigen Situationen erweist es sich aber als sinnvoller, den Printserver Cups per Kommandozeile zu bedienen.

Sie arbeiten via SSH an einem Datenbankserver und möchten remote auf dem Drucker neben der Datenbankmaschine drucken? Sie wollen erreichen, dass Ihre Shell-Skripte ihre Ergebnisse ohne manuellen Benutzereingriff auf das Papier bringen? Sie müssen öfter Druckaufträge auf andere Drucker verschieben oder abbrechen? Das alles erledigen Sie am schnellsten mit den zu Cups gehörenden Kommandozeilenbefehlen.

Dieser Artikel wechselt in der Beschreibung zwischen Drucker und Warteschlangen. Aus der Perspektive eines Kommandozeilenbefehls allerdings ist das in der Regel dasselbe. Für einen physikalischen Drucker lassen sich jedoch mehrere Warteschlangen einrichten. Das erweist sich insbesondere dann als sinnvoll, wenn Sie Geräte mit entsprechenden Erweiterungen ausstatten – etwa mit zusätzlichen Papierkassetten, die Sie mit verschiedenem Papier befüllen.

Wie Sie Drucker respektive Warteschlangen anlegen und verwalten, erklärt der erste Teil dieses Workshops, "Drucken auf Kommando", der in LU 09/2016 erschien [1]. Sie finden ihn als PDF auf der Heft-DVD dieser Ausgabe.

Drucken

Cups liefert die beiden Druckbefehle lp (System V) und lpr (BSD) mit, die die Cups-Entwickler um diverse eigene Optionen erweiterten. Die Tabelle "Lp und Lpr: Druckkommandos" zeigt die für die tägliche Arbeit wichtigsten Kommandos.

Lp und Lpr: Druckkommandos

Aktion Eingabe Lp Eingabe Lpr
Druckbefehl auf Standarddrucker lp Datei lpr Datei
Druckbefehl mit Druckerangabe lp -d Drucker Datei lpr -P Drucker Datei
Anzahl Kopien (max. 100) lp -n Anzahl lpr -# Anzahl
Datei ohne Filter drucken lp -o raw lpr -o raw
Angabe der zu druckenden Seiten lp -P Seiten

Über den Schalter -o eröffnen beide Kommandos die Möglichkeit für weitere Verfeinerungen des Druckbefehls. Auf diesem Weg wählen Sie beispielsweise das Papierformat, schalten zwischen einseitigem und Duplexdruck um, fassen Seiten auf einem Blatt zusammen und vieles andere mehr. Eine Übersicht dazu bietet die Tabelle "Lp und Lpr: Option -o im Detail".

Lp und Lpr: Option <c>-o<c> im Detail

Aktion Eingabe Hinweis
Papiergröße -o media=Papierformat zum Beispiel a3, a4, a5
Querformat -o landscape
Einseitiger Druck -o sides=one-sided
Duplex (lange Seite) -o sides=two-sided-long-edge
Duplex (kurze Seite) -o sides-two-sided-short-edge
Druckdaten an Seitengröße anpassen -o fit-to-page
Seiten auf einem Blatt zusammenfassen -o number-up=Zahl mögliche Werte: 2/4/6/9/16
Druck reiner Textdaten (Datei / aus Pipe)
Seitenrand links -o page-left=Punkte 72 Punkte je Zoll (2,54 cm)
Seitenrand rechts -o page-right=Punkte
Seitenrand oben -o page-top=Punkte
Seitenrand unten -o page-bottom=Punkte
Zeichen je Zoll -o cpi=Punkte gebräuchlich *10 oder 12
Zeilen je Zoll -o lpi=Punkte gebräuchlich *6

Viele der Druckoptionen lassen sich miteinander kombinieren. In den entsprechenden Beispielen aus Listing 1 kommt gelegentlich der im ersten Teil der Reihe bereits beschriebene Drucker fs2000 explizit als Ziel zum Einsatz. Bei der verwendeten Druckdatei kann es sich um eine Text-, Postscript- oder PDF-Datei handeln. Manche Optionen verarbeiten ausschließlich reine Textdaten, die Sie über eine Textdatei einfüttern oder die per Pipe an den Druckbefehl gelangen. In Listing 1 sehen Sie im Einzelnen:

  • die Ausgabe von zwei Seiten je Druckseite unter Angabe des Druckers (Zeile 1),
  • den Druck im Querformat bei Ausgabe auf Standarddrucker (Zeile 2),
  • einen an die Seitengröße angepassten Ausdruck auf ein spezifisches Zielgerät (Zeile 3),
  • eine Ausgabe mit acht Zeichen je Zoll bei Ausgabe auf Standarddrucker (Zeile 4),
  • eine Ausgabe mit drei Zeilen je Zoll auf den Standarddrucker (Zeile 5), sowie
  • den Ausdruck auf einen spezifischen Drucker unter Angabe von einzuhaltenden Seitenrändern (Zeile 6).

Listing 1

$ lpr -o number-up=2 -Pfs2000 Druckdatei
$ lp -o landscape Druckdatei
$ lpr -o fit-to-page -Pfs2000 Druckdatei
$ lpr -o cpi=8 Textdatei
$ lpr -o lpi=3 Textdatei
$ lpr -o page-left=72 -o page-top=144 -Pfs2000 Textdatei

Um die Druckgeschwindigkeit eines Geräts voll auszureizen, senden Sie diesem eine vorformatierte Druck- oder Textdatei ohne Filterbehandlung. Dazu dient folgendes Kommando:

$ lpr -o raw -Pfs2000 Druckdatei<c>

In diesem Modus erreicht der im Test verwendete Kyocera FS-2000 nahezu die im Prospekt angegebene Seitenzahl je Minute. Sie müssen dazu allerdings die zeichenspezifischen Einstellungen des Druckers kennen und gegebenenfalls den Zeichensatz der Textdatei vorher entsprechend umstellen – in unserem konkreten Fall beispielsweise mittels recode auf MSDOS.

Die Angabe der Druckdatei entfällt, wenn die Daten aus der Pipe an den Druckbefehl gelangen. Im folgenden Beispiel lassen wir den Drucker fs2000 eine Shell-Ausgabe drucken, wobei vier Seiten auf einer Druckseite Platz finden sollen:

$ cat Textdatei | lp -o number-up=4 -d fs2000

Die beiden Beispiele in der Abbildung 1 zeigen das unterschiedliche Rückmeldungsverhalten von Lp und Lpr. Beim Verwenden von Lp erhalten Sie die Jobnummer der jeweiligen Warteschlange. Diese können Sie im Bedarfsfall zur weiteren Behandlung des Druckauftrags verwenden.

Abbildung 1: Beim Absetzen von Druckbefehlen reagieren Lp und Lpr unterschiedlich.

Druckaufträge verwalten

Über Kommandozeilenbefehle können Sie Druckaufträge auch auflisten, verschieben, anhalten und löschen. Dazu stehen für gleichartige Aktionen oft mehrere Befehle zur Auswahl. Auch hier übernahm das Cups-Projekt manches schlicht aus Kompatibilitätsgründen.

Mithilfe der Kommandos lpstat und lpq erfahren Sie, welche Aufträge derzeit zum Ausdruck anstehen. Erweitert um den Schalter -o, listet Lpstat Druckaufträge auf; ohne die Angabe eines bestimmten Druckers listet dieser Aufruf die Jobs aus allen Warteschlangen auf.

Beim Befehl Lpq hingegen müssen Sie dafür die Option -a verwenden. Möchten Sie die Ausgabe auf einen Drucker einschränken, vervollständigen Sie den Befehl mit -PDrucker. In Abbildung 2 sehen Sie einige entsprechende Abfragen. Die ersten beiden zeigen Aufträge bei allen Druckern an. Bei der dritten Abfrage teilt Lpq mit, der Drucker sei momentan nicht ausgabebereit – allerdings ohne Begründung. Die letzte Abfrage zeigt eine Warteschlange ohne Inhalt, der Drucker steht für Aufträge bereit.

Abbildung 2: Cups bietet verschiedene Möglichkeiten, die Druckerwarteschlangen abzufragen.

In jedem Fall erfahren Sie die Jobnummern der Druckaufträge, die Sie gegebenenfalls zum Verschieben oder Löschen benötigen. Fällt ein Drucker aus und Sie verfügen über mehrere Geräte, lässt sich ein anstehender Auftrag mittels Lpmove an ein anderes Gerät leiten (Abbildung 3):

$ lpmove Jobnr Drucker
Abbildung 3: Besitzen Sie mehrere Drucker, erlaubt das Kommando lpmove das Verschieben eines Druckauftrags zu einem anderen.

Die Befehle cancel und lprm erlauben es Ihnen, einzelne Druckaufträge über deren Jobnummer zu löschen. Auf Wunsch entfernt cancel -a Drucker auch alle Aufträge, die derzeit an einem Drucker anstehen (Abbildung 4).

Abbildung 4: Zunächst werden mit beiden Programmen einzelne Aufträge aus der Warteschlange des Druckers fs2000 entfernt. Die noch verbleibenden löscht cancel in einem Rutsch.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Effektiver Drucken mit Prescribe II
    Kyocera stattet seine Drucker mit der Kommandosprache Prescribe aus, mit der sich auch von der Linux-Shell aus komplexe Druckaufträge und Stapelverarbeitungsläufe steuern und viele Handgriffe automatisieren lassen.
  • Drucker von der Kommandozeile steuern
    In der Regel druckt es sich bequem über entsprechende Dialoge in den Anwendungen. Wer Dateien aber noch mit Filtern nachbearbeiten möchte, muss anschließend von Hand drucken: Wir geben eine Einführung in lpr & Co.
  • KDEPrint
    Mit dem neuen Print-Framework KDEPrint macht KDE 2.2 in Drucksachen einen Riesensprung nach vorn – Grund genug für eine Erkundungstour.
  • Der lange Weg der Druckdaten
    Welche Wege und Umwege nimmt eine Datei, bis ihr Inhalt farbig oder schwarz auf weiß zu Papier gelangt?
  • Drucken auf Kommando
    Ein Raspberry Pi eignet sich bestens als Druckserver für kleine Netze, zumal sich der Server-Dienst Cups auch abseits von Web- und GUI-Oberflächen via Terminal verwalten lässt.
Kommentare

Infos zur Publikation

LU 11/2017: Server für Daheim

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...