Neben den verschiedenen grafischen Hilfsmitteln können CUPS Drucker auch vollständig über die Kommandozeile eingerichtet werden. Diese Art der Einrichtung lässt sich besser dokumentieren und nachstellen als die Nutzung der sich häufig ändernden grafischen Werkzeuge. Außerdem erleichtert dies auch die automatische Verteilung der Druckerkonfiguration über eine Konfigurationsverwaltung wie Saltstack oder Ähnliches.
Für betreute CIP-Pools oder Workstations können Druckerkonfigurationen nach Ihren Vorgaben auch automatisiert verteilt werden.
Kontaktieren Sie uns gerne für weitere Informationen.
Voraussetzungen
Pakete für Ubuntu 16.04/18.04
# one-liner
bash$ sudo DEBIAN_FRONTEND=noninteractive apt-get install cups-client
Verwendete Kommandos
lpadmin https://www.cups.org/doc/man-lpadmin.html lpinfo https://www.cups.org/doc/man-lpinfo.html lpoptions https://www.cups.org/doc/man-lpoptions.html
Konfiguration
Beschreibung der Kommandos für verschiedene Einsatzszenarios.
Beispielhaft soll der Drucker Lexmark MX610de
per FAUPRINT eingerichtet werden.
Generischen Druckertreiber finden/installieren
Um einen passenden Treiber im System zu finden kann man eine entsprechende Abfrage absetzen, wobei man den Hersteller und die Modellbezeichnung des Druckers als Suchparameter angibt.
Das Ergebnis ist eine Liste der passenden Treiber bestehend aus Pfad zur PPD-Datei und der Modellbezeichnung.
Da es sich bei unserem Beispiel-Modell um einen Lexmark MX610de
handelt könnten wir den letzten Treiber aus der Liste wählen und den angegebenen PPD-Pfad in der weiteren Einrichtung verwenden.
bash$ lpinfo --make-and-model "Lexmark MX610" -m foomatic-db-compressed-ppds:0/ppd/foomatic-ppd/Lexmark-MX610-Postscript.ppd Lexmark MX610 Foomatic/Postscript openprinting-ppds:0/ppd/openprinting/Lexmark/Lexmark_MX610_Series.ppd Lexmark MX610 Series openprinting-ppds:1/ppd/openprinting/Lexmark/Lexmark_MX610_Series.ppd Lexmark MX610 Series openprinting-ppds:2/ppd/openprinting/Lexmark/Lexmark_MX610_Series.ppd Lexmark MX610 Series openprinting-ppds:3/ppd/openprinting/Lexmark/Lexmark_MX610_Series.ppd Lexmark MX610 Series foomatic-db-compressed-ppds:0/ppd/foomatic-ppd/Lexmark-MX610de-Postscript.ppd Lexmark MX610de Foomatic/Postscript
Herstellerspezifischen Druckertreiber finden/installieren
Sollte kein passender Treiber verfügbar sein, oder der vorhandene Treiber nicht die nötige Funktionalität bieten, kann man oft auf den Webseiten des Druckerherstellers auch für das jeweilige Modell spezifische Linux-Treiber herunterladen.
Dabei ist es oft nicht wichtig genau die richtige Software für eine bestimmte Distribution zu wählen. Es muss normalerweise sogar gar keine Software installiert werden.
Entscheidend ist irgendwie an die PPD-Datei zu kommen!
Für den Lexmark MX610de
findet sich z. B. auch ein passender Treiber auf der Lexmark Homepage, den man nach dem extrahieren aus dem heruntergeladenen Archiv im System installieren und verwenden kann. Nach erfolgreicher Installation liefert die Abfrage liefert unter den schon bekannten Optionen auch den neu installierten Treiber.
Diesen verwenden wir nun in der weiteren Einrichtung des Druckers.
bash$ sudo cp /tmp/Lexmark_MX610_Series.ppd /usr/share/cups/model/ bash$ sudo chmod 644 /usr/share/cups/model/Lexmark_MX610_Series.ppd bash$ lpinfo --make-and-model "Lexmark MX610" -m ... Lexmark_MX610_Series.ppd Lexmark MX610 Series ...
Fehlende Druckerfilter installieren
Dieses Problem tritt erst nach der Einrichtung des Druckers auf!
Führen Sie zunächst die Schritte unter „Drucker hinzufügen“ aus und kehren Sie zur Fehlerbehandlung ggf. hierher zurück.
Manchmal benötigen die Druckertreiber des Herstellers noch zusätzlich Filter zur Verarbeitung der Druckaufträge. Hinweise auf fehlende Filter geben häufig die Logdatei unter /var/log/cups/error_log
oder auch die Statusanzeige des Druckers in den entsprechenden grafischen Benutzeroberflächen.
In diesem Fall war der fehlende Filter ebenfalls im heruntergeladenen Archiv des Herstellers enthalten und konnte nach dem Entpacken wie folgt nachinstalliert werden.
# Check the logfile for recent filter errors bash$ sudo tail -n50 /var/log/cups/error_log | grep -i filter E [03/May/2018:14:30:59 +0200] rrze-lexmark-mx610de: Datei \"/usr/lib/cups/filter/fax-pnh-filter\" nicht verfügbar: No such file or directory E [03/May/2018:14:30:59 +0200] rrze-lexmark-mx610de: Datei \"/usr/lib/cups/filter/CommandFileFilterG2\" nicht verfügbar: No such file or directory E [03/May/2018:14:31:56 +0200] rrze-lexmark-mx610de: Datei \"/usr/lib/cups/filter/CommandFileFilterG2\" nicht verfügbar: No such file or directory # Install previously extracted filters bash$ sudo cp /tmp/CommandFileFilterG2 /usr/lib/cups/filter/ bash$ sudo chmod 755 /usr/lib/cups/filter/CommandFileFilterG2 bash$ sudo cp /tmp/fax-pnh-filter /usr/lib/cups/filter/ bash$ sudo chmod 755 /usr/lib/cups/filter/fax-pnh-filter2
Der Drucker sollte jetzt funktionieren.
Drucker hinzufügen
Nach Auswahl des entsprechenden PPD-Pfades kann der Drucker nun im System angelegt werden.
Dabei können auch diverse Standardeinstellungen gleich mit angegeben werden.
Beispiel mit generischem Foomatic Treiber:
bash$ sudo /usr/sbin/lpadmin \ -p rrze-lexmark-mx610de \ -o 'printer-is-shared=false' \ -o 'auth-info-required=none' \ -o 'media=A4' \ -o 'Two-Sided Printing=DuplexNoTumble' \ -E \ -v "smb://fauprint.rrze.uni-erlangen.de/rzpr-2035-lex-ms610de" \ -D "Lexmark MX610de" \ -L "RRZE, R2.035" \ -m foomatic-db-compressed-ppds:0/ppd/foomatic-ppd/Lexmark-MX610de-Postscript.ppd
Beispiel mit Treiber vom Hersteller:
bash$ sudo /usr/sbin/lpadmin \ -p rrze-lexmark-mx610de \ -o 'printer-is-shared=false' \ -o 'auth-info-required=none' \ -o 'media=A4' \ -o 'Two-Sided Printing=DuplexNoTumble' \ -E \ -v "smb://fauprint.rrze.uni-erlangen.de/rzpr-2035-lex-ms610de" \ -D "Lexmark MX610de" \ -L "RRZE, R2.035" \ -m Lexmark_MX610_Series.ppd
Tests
Prüfen der Einstellungen
Anzeige der Einstellungen in einer Zeile:
bash$ lpoptions -p rrze-lexmark-mx610de auth-info-required=negotiate copies=1 device-uri=ksmb://fauprint.rrze.uni-erlangen.de/rzpr-2035-lex-ms610de finishings=3 job-cancel-after=10800 job-hold-until=no-hold job-priority=50 job-sheets=none,none marker-change-time=0 number-up=1 printer-commands=ReportLevels,AutoConfigure printer-info='Lexmark MX610de' printer-is-accepting-jobs=true printer-is-shared=false printer-location='RRZE, R2.035' printer-make-and-model='Lexmark MX610 Series' printer-state=3 printer-state-change-time=1525351551 printer-state-reasons=none printer-type=10522836 printer-uri-supported=ipp://localhost/printers/rrze-lexmark-mx610de
Alternativ geht es auch etwas ausführlicher bzw. mit Anzeige von spezifischeren Einstellungen des Druckers:
bash$ lpoptions -p rrze-lexmark-mx610de -l PageSize/Media Size: Letter Legal 8.5x13.4028 B5 *A4 Executive A5 A6 FanFoldGermanLegal Statement EnvMonarch Env9 Env10 EnvDL EnvC5 ISOB5 OthEnv Custom.WIDTHxHEIGHT InputSlot/Media Source: *Tray1 Tray2 Tray3 Tray4 MultipurposeFeeder ManualPaper ManualEnv OptDuplex/Duplexer: False *True OptFlash/Flash: *False True OptTray2/Tray 2: *False True OptTray3/Tray 3: *False True OptTray4/Tray 4: *False True OptMultipurposeFeeder/Multipurpose Feeder: False *True OptStapler/Staple: *False True PnH/Print and Hold: *False Verify Repeat Reserve Custom.PASSCODE FaxNumber/Fax Number: *False Custom.STRING Duplex/Duplex: None *DuplexNoTumble DuplexTumble Collate/Collation: *True False SepPages/Separator Pages: *PrinterS NoneF Jobs Copies Pages SepSource/Separator Source: *PrinterS Tray1 Tray2 Tray3 Tray4 MultipurposeFeeder OutputBin/Output Bin: *PrinterS StandardBin StapleJob/Staple Job: *PrinterS FalseM TrueM LXResolution/Resolution: 1200dpi 604x600dpi *602x600dpi 600dpi Halftone/Halftone: *PrinterS FalseF TrueF TonerDarkness/Toner Darkness: *PrinterS 1 2 3 4 5 6 7 8 9 10 LexPixelBoost/Pixel Boost: *PrinterS False Fonts Horizontally Vertically BothDirections LexMirror/Mirror: True *False ColorMode/Color Mode: *PrinterS TrueM LexBrightness/Brightness: PrinterS -6 -5 -4 -3 -2 -1 *0 +1 +2 +3 +4 +5 +6 LexContrast/Contrast: PrinterS *0 1 2 3 4 5 GrayCorrection/Gray Correction: *PrinterS Manual FalseM MediaType/Paper Type: *PrinterS Plain Colored Transparency Card Labels Bond Letterhead Preprint RoughEnvelope Envelope Recycled Light Heavy Rough Custom1 Custom2 Custom3 Custom4 Custom5 Custom6 LexBlankPage/Print Blank Pages: *PrinterS False True