[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Druckerneustart notwendig unter CUPS



On Day 29 of Chaos 3171, Wolfgang Jeltsch wrote:

> Wenn ich einen Druckjob absetze und der Drucker ist aus, dann wird natürlich 
> erstmal nichts gedruckt. Wenn ich den Drucker dann aber anschalte, wird immer 
> noch nichts gedruckt, bis ich über das Webfrontend von CUPS (oder vielleicht 
> auch über die Kommandozeile) den Drucker "starte". Dieses Starten kann aber 
> anscheinend nur ein Administrator erledigen. Wie verhindere ich, dass normale 
> Nutzer nicht mehr drucken können, bloß weil sie zu spät den Drucker 
> eingeschaltet haben?

Laß mich raten. Der Drucker ist über usb angeschlossen und du benutzt
udev.

Dann hast du folgendes Problem. Das Device wird erst erzeugt wenn der
Drucker angeschaltet/angestöpselt wird. Schickst du jetzt vorher einen
Druckauftrag ab, stellt CUPS fest das es das Device nicht gibt und
deaktiviert den Drucker. Wird jetzt der Drucker
angeschaltet/angestöpselt wird das Device zwar angelegt aber CUPS
bekommt das nicht mit.

Die Lösung ist jetzt udev zu sagen das es den Drucker aktivieren soll
wenn das Device erstellt wird. Den Fall "CUPS wird bei ausgeshaltetem
Drucker gestartet (der Drucker ist dann aktiv da CUPS zu diesem
Zeitpunkt nicht überprüft ob das Device überhaupt exstiert) und der
Drucker wird eingeschaltet bevor ein Druckauftrag abgesetzt wird"
braucht man nicht abzufangen da das aktivieren eines aktivierten
Druckers keinerlei Auswirkungen hat.

Das ganze sieht dann etwa so aus:
In udev.rules wird die Zeile BUS="usb", KERNEL="lp[0-9]*", NAME="usb/%k"
um ein PROGRAM="/etc/udev/scripts/cupsenable.sh" ergänzt. In
cupsenable.sh könnte dann so aussehen

#!/bin/sh
for PRINTER in /etc/cups/ppd/*
   do cupsenable $(basename $PRINTER .ppd)
done

Da diese Frage an verschidenen Stellen immer wieder auftaucht würden
mich auch mal ein paar andere Meinungen zu der Idee Interessieren, da
bei breiterer Akzeptanz ich mir dann auch noch ein paar Ideen über die
Integration machen und dann das ganze entweder ins BTS werfen oder
gleich beimm entsprechenden Maintainer anfragen.


ttyl8er, t.k.

-- 
"Ich dachte immer, UNIX ist was für Leute, denen es gefällt,
auf einen Bildschirm zu starren, auf dem es aussieht, als
hätte sich gerade ein Gürteltier auf der Tastatur gewälzt."
(Stefan Schneider)



Reply to: