Hallo Liste ! Ich habe einen Netzwerkdrucker mittels CUPS auf meinem SuSE 9.0-System installiert. Der Testdruck klappt. Nun habe ich eine Software installiert die mir zu Auswahl der Druckqueues /dev/lp0 - lp2 vorgibt. Da bin ich etwas ratlos, wie ich dem System nun mitteilen kann, dass die Druckque, z.B. von /dev/lp2, der Drucker ist, den ich als Netzwerkdrucker eingerichtet habe. Ich hatte was von "Links" gelesen bin damit aber nicht weiter gekommen. Hat hier jemand einen Tipp für mich?! Hoffe, dass meine Erklärung verständlich ist :-)... Gruß und Danke vorab, Sandro
Hallo, On Jan 5 10:42 Lachender Engel wrote (shortened):
Ich habe einen Netzwerkdrucker mittels CUPS auf meinem SuSE 9.0-System installiert. Der Testdruck klappt. Nun habe ich eine Software installiert die mir zu Auswahl der Druckqueues /dev/lp0 - lp2 vorgibt.
Druckerwarteschlangen heissen nicht "/dev/..." /dev/lp* sind Gerätedateien über die direkt auf die Parallelports zugegriffen wird. So kann man keinen Netzwerkdrucker ansprechen. Es hat den Anschein, als ob diese "Software" nicht die existierenden Druckerwarteschlangen benutzen will, wie es sich für jede normale Software gehören würde, sondern direkt einen Drucker am Parallelport ansprechen will. Wenn es keine Möglichkeit gibt, dieser "Software" den Namen einer Druckerwarteschlange oder noch besser ein Kommando zum Drucken mitzuteilen (etwa "lp -d Warteschlange"), dann wird es kompliziert: Man müsste dann z.B. /dev/lp2 (um ggf. den existierenden Parallelport weiterhin via /dev/lp0 verwenden zu können) durch etwas ersetzten, was Druckdaten annimmt und an die eigentliche Druckerwarteschlange weiterleitet. Z.B. aud /dev/lp2 ein FIFO (bzw. "named pipe") machen und einen Leser-Prozess starten, der das Weiterleiten macht: mv /dev/lp2 /dev/lp2.save mkfifo /dev/lp2 chmod a+rw /dev/lp2 while true ; do cat /dev/lp2 | lp -d Warteschlange ; done Das hat aber noch keinen gegenseitigen Ausschluss, d.h. wenn mehrere Schreiber gleichzeitig Daten an /dev/lp2 senden, mischen diese sich so lange zu einem Druckauftrag, bis der letzte Schreiber /dev/lp2 wieder geschlossen hat. Das kann man einfach testen, indem man zweimal parallel cat >/dev/lp2 laufen lässt und da wechselweise Textzeilen eingibt. Wenn beide "cat >/dev/lp2" beendet sind, hat man einen Druckauftrag, der die Zeilen von beiden enthält. Da aber diese "Software" anscheinend direkt mit dem Drucker kommunizieren will, kann es sein, dass das grundsätzlich nicht funktioniert, nämlich dann nicht, wenn diese "Software" direkte bidirektionale Kommunikation mit dem Drucker benötigt. Gruss, Johannes Meixner -- SUSE LINUX AG, Maxfeldstrasse 5 Mail: jsmeix@suse.de 90409 Nuernberg, Germany WWW: http://www.suse.de/
Hallo, On Jan 8 10:30 Johannes Meixner wrote (shortened):
Man müsste dann z.B. /dev/lp2 (um ggf. den existierenden Parallelport weiterhin via /dev/lp0 verwenden zu können) durch etwas ersetzten, was Druckdaten annimmt und an die eigentliche Druckerwarteschlange weiterleitet.
Z.B. aud /dev/lp2 ein FIFO (bzw. "named pipe") machen und einen Leser-Prozess starten, der das Weiterleiten macht:
mv /dev/lp2 /dev/lp2.save mkfifo /dev/lp2 chmod a+rw /dev/lp2
while true ; do cat /dev/lp2 | lp -d Warteschlange ; done
Eben habe ich eine ärgerliche Konsequenz daraus entdeckt: Nach so einer Veränderung von /dev/lp2 startet der cupsd nicht mehr ordentlich (bzw. evtl. nur mit grosser Zeitverzögerung). In /var/log/cups/error_log findet sich etwas in der Art "backend did not respond for 30 seconds" und der cupsd hängt ohne Zugriffe von aussen zu akzeptieren (mit "lpstat -r" nachweisbar). Ich habe nicht sehr lange gewartet, ob der cupsd nicht doch noch irgendwann weitermacht. Wenn man keinen Parallelport braucht, kann man das Parallelport-Backend /usr/lib/cups/backend/parallel in ein anderes Verzeichnis verschieben. Hintergrundinformation: Beim Starten ruft der cupsd alle Backends in /usr/lib/cups/backend/ nacheinander auf und interpretiert deren Ausgaben, z.B. root@host # /usr/lib/cups/backend/parallel direct parallel:/dev/lp0 "HP DeskJet 990C" "Parallel Port #1" direct parallel:/dev/lp1 "HP LaserJet 1220" "Parallel Port #2" und ermittelt so, welche Device URIs auf dem System verfügbar sind. Die verfügbaren Device URIs werden z.B. mit "lpinfo -v" angezeigt. Nur die auf dem jeweiligen System verfügbaren Device URIs werden im CUPS Web-Frontend angeboten. Das Parallelport Backend kommt entweder nicht mit einer Gerätedatei /dev/lp* zurecht, wenn diese keine Informationen zurückliefert (wie z.B. obige FIFO), oder es hat einen sehr langen Timeout. Gruss, Johannes Meixner -- SUSE LINUX AG, Maxfeldstrasse 5 Mail: jsmeix@suse.de 90409 Nuernberg, Germany WWW: http://www.suse.de/
participants (2)
-
Johannes Meixner
-
Lachender Engel