Auf 2 Druckern gleichzeitig drucken

Hallo liebe Community,

ich hätte mal eine Frage zum lpr Kommando unter Linux SuSe 9.2.
Ich bin ein Anfänger, also bitte nicht soo viele Fachbegriffe :wink:

Ich arbeite mit einem branchenspezifischem Programm, bei dem man Drucker unter Cups ansteuern kann. Allerdings kann ich nur eine Kommandozeile eingeben.
Ich habe keine grafische Linux-Oberfläche, weil das System nur für das Branchenprogramm konfiguriert ist… :frowning:

Ist es möglich mit einem Befehl auf 2 Druckern das Selbe auszudrucken?
Hintergrund: Ich möchte auf einem Drucker das Hauptdokument und auf dem zweiten Drucker mit einem Kommando eine Kopie drucken lassen.
Die Drucker sind im Netzwerk an Windowsrechnern angeschlossen.
Ich dachte schon über „Klassen“ was erreichen zu können, konnte aber nichts finden.

Momentan sieht es bei mir so aus:

lpr -P HPLaser -#2

Jetzt möchte ich ein Dokument am HPLaser-Drucker und das Selbe am HPTinten-Drucker:

lpr -? HPLaser ?? ?? HPTinten

geht das irgendwie??

Danke und Grüße,
mgschrauber

Hi,

falls lpr nicht zwei „P“-Optionen erlaubt könntest du ein miniscript machen. Schreib das in eine datei (zB lprspezial) und mach die ausführbar (chmod a+x lprspezial ) Sowas in der Art, ob das geht müsstest du mal ausprobieren:

#!/bin/sh
lpr -P HPLaser $\*
lpr -P HPTinten $\*

Alle Optionen mit dem du diese datei startest werden an lpr weitergereicht. „P“ brauchste dann natürlich nicht nochmal.

HTH,
J~

Hallo,

danke für die schnelle Antwort.
Was meinst Du mit zwei „P“-Optionen?
Gebe ich ein

lpr -P HPLaser -P HPTinten

druckt nur der HPTintendrucker. Befehl vergessen oder wie sollte es richtig sein?

Das Skript hab ich probiert. (Muss es in ein bestimmtes Verzeichnis?)
Leider funktioniert das mit dem Anwendungsprogramm nicht.

Gebe ich in dem Programm als Druckbefehl ein:

lprspezial

springt mir meine Anwendung ab.
Starte ich das Skript manuell und gebe eine Datei an

lprspezial test.text

durckt er sie auf beiden Druckern :smile:)
Allerdings nur in dem Verzeichnis, in dem das Skript liegt.

Sorry, aber wie schon gesagt - Anfänger…

Gruß,
mgschrauber

Hallo,

Das Skript hab ich probiert. (Muss es in ein bestimmtes
Verzeichnis?)

/usr/local/bin oder irgendetwas anderes, was im Pfad steht, damit man es von überall aufrufen kann.

Leider funktioniert das mit dem Anwendungsprogramm nicht.

Evtl. übergibt das Anwendungsprogramm die Daten per STDIN, dann geht das so nicht, weil in dem Script aus der 1. Antwort dann das 2. lpr ewig auf seine Daten wartet, wenn kein Dateiname übergeben wird.
Versuche mal:


#!/bin/bash
PFILE=/tmp/$RANDOM.tmp
tee $PFILE | lpr -PPrinter1 $*
lpr -PPrinter2 $* $PFILE
rm $PFILE

Rest wie im anderen Posting, da das Script die Eingabe als STDIN erwartet, musst du zum Testen "lprspecial2

Hi Alexander,

danke.
Das Skript an sich funktioniert. (Jetzt auch aus anderen Verzeichnissen heraus).
Leider arbeitet die Anwendung damit nicht.
Möchte man eine Testseite drucken, springt sie ab oder reagiert mit „Nichtdrucken“.

Ich muss doch anstelle des „lpr -P HPLaser“ nur „lprspezial2“ einsetzen, richtig?

Wie gesagt, die Anwendung ist eine spezielle - nicht auf dem freien MArkt erhältliche und ich weiss nicht, wie die das machen.
Mann kann nur als Drucker Art „Drucker Spooler“ anwählen und dann mit Cups Drucker ansteuern.

Da es mit euren Skripts ja schon fast läuft, fehlt bestimmt nur eine Kleinigkeit!?!?!?

Hi,

Was meinst Du mit zwei „P“-Optionen?

DAS meinte ich :smile:
Hätte sein können, dass lpr das kann. Wasweißich :smile:

Gebe ich ein

lpr -P HPLaser -P HPTinten
druckt nur der HPTintendrucker.

Das Skript hab ich probiert. (Muss es in ein bestimmtes
Verzeichnis?)

Es „MUSS“ nicht. „Sinnvolle“ Verzeichnisse hängen von ein paar Sachen ab (bist du root, darf jeder User drucken, …). Versuch mal die schon genannte zB /usr/bin und vergiss chmod nicht. Bei Problemen gibt uns mal die Fehlermeldung

Gebe ich in dem Programm als Druckbefehl ein:

lprspezial

Geht das denn direkt in der Konsole oder startet es dort auch nicht?

lprspezial test.text

durckt er sie auf beiden Druckern :smile:)

gut, geht also prinzipiell :smile:

Allerdings nur in dem Verzeichnis, in dem das Skript liegt.

Dein Spezialprogramm muss wissen wo das Programm liegt. Suche tut er nur hier:
echo $PATH

mach das mal bei dir in der Konsole und kuck dir die Ausgabe an.

G,
J~

Hi,

das mein Script etwas anderes macht wie das Erste, hast du gesehen und beide probiert ?

Wenn man lpr keinen Dateinamen übergiebt, liest es die Daten von der Standardeingabe, in dem Fall wäre mein Script das Richtige, wenn die Anwendung einen Dateinamen übergibt, dann das erste hier von J ~ gepostete Script.
Das Script muss sich ja im Prinzip wie lpr verhalten, und das kann beides.

ggfs. mal eine Datei /usr/local/bin/lprtest als Script anlegen und die Parameter ausgeben lassen:

#!/bin/bash
echo „----“ >/tmp/lprtest
echo $* >>/tmp/lprtest
echo „----“ >>/tmp/lprtest
cat >>/tmp/lprtest

(letzte Zeile ggfs. weglassen). Nach dem Testdruck in der Anwendung sollten dann in /tmp/lprtest die Parameter zwischen den — stehen (less /tmp/lprtest zum Anzeigen), wenn die Daten per STDIN übergeben werden und die letzte Zeile drin ist, die Druckdaten dahinter. Werden die Druckdaten als Datei übergeben, sollte zwischen den — auch ein Dateiname dabeistehen…

Alexander

Also ich habe neue Erkenntnisse.

Das Skript von Alx funktioniert doch bei einer bestimmten Voraussetzung.
(Die Sache mit dem Ausgeben der Parameter habe ich nicht hinbekommen, lprtest war immer leer!?)

Ich habe die Möglichkeit die Anwendung an der Console zu starten und habe dann (ich nenn es mal so:smile: eine einfache „DOS“ (entschuldigung) Version der Anwendung. Zu bedienen mit der Tastatur.
Hier funktioniert das Skript von Alx, gebe ich lprspezial2 als Druckbefehl an. Das ist schon mal sehr schön.

Nur haben wir neuerdings eine „grafische“ Oberfläche die unter Java die Anwendung als Fenster startet (die Anwendung selber zwar wieder Dos-Ähnlich, aber mit Maus) Die Javafenster werden quasi als „Terminal“ an den „Server“ angemeldet.

Möchte ich hier mit dem Skript drucken, springt mit die Anwendung bei dem Button „Testdruck“ komplett ab. Übergehe ich den Testdruck in der Anwendung und versuche es einfach so, sieht man kurz eine Statusmeldung der „Druckerauswahl“ - also lprspezial2 und es passiert nix.
Eine Idee, warum das unter der Java-Oberfläche nicht funktioniert?

Aber super, dass ich schon mal soweit bin. Danke.

Hallo,

Eine Idee, warum das unter der Java-Oberfläche nicht
funktioniert?

Wenn die Rechte vom Script stimmen (755), mal versuchen, überall die kompletten Pfade einzutragen, also z.B. /usr/local/bin/lprspecial2 im Programm und /usr/bin/lpr im Script.

Alexander

Hallo Alexander,

super, es funktioniert.
Ich habe in der Anwendung den kompletten Pfad angegeben und so geht es.
Ich kann über die Java-Fenster und auch von extern per rlogin drucken.

Ich bin euch echt dankbar!

Stellt euch ein virtuelle Flasche Sekt von mir vor :wink:)

Viele Grüße,
mgschrauber