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
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…
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:
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.
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:
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!?!?!?
DAS meinte ich
Hätte sein können, dass lpr das kann. Wasweißich
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 )
gut, geht also prinzipiell
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.
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:
(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…
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?
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.
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 )