Meine Slug macht sich bisher prima als Printserver, allerdings hat CUPS die Eigenart, die Druckerwarteschlange zu stoppen, wenn ein Fehler auftritt (z.B. Drucker ausgeschaltet/im stand-by). Diese lässt sich anschließend nur noch über das CUPS Webinterface als root starten. Sehr nervig, vor allem wenn auch Leute drucken möchten, die sich mit sowas nicht beschäftigen möchten.

Dieses kleine Script überwacht das Spool-Verzeichnis /var/spool/cups auf neue Jobs. Neue Jobs landen als Datei d* in diesem Verzeichnis. Nach dem Drucken werden diese in c* umbenannt. Findet das Script so eine Datei, dann sucht es mit lsusb nach meinem Canon Pixma MP780. Ist er angeschlossen, dann startet es mit cupsenable die zugehörige CUPS-Warteschlange. Die Prüfung soll alle 10 Sekunden stattfinden.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#! /bin/sh
while [ true ]
do
        # wait for some seconds to save CPU time
        sleep 10
 
        # check the cups spool dir for new jobs
        CHECKSPOOL=$(ls /var/spool/cups/d* | grep such)
 
        if [ "$CHECKSPOOL" == "" ]; then
                echo "Spool data found. Starting printer ..."
                # Look for my Canon MP780. Find out your ID:VENDOR using lsusb
                CHECKPRINTER=$(lsusb -d 04a9:1707)
                if [ "$CHECKPRINTER" ]; then
                        cupsenable Canon_MP780_USB_1
                        sleep 60
                fi
        fi
done

Das Script kann z.b. aus dem Script /etc/init.d/cupsys aufgerufen und auch gestoppt werden. Hier einige Auszüge meiner cupsys:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[...]
case "$1" in
  start)
        [...]
        /usr/bin/auto_printerqueue.sh&
        [...]
  stop)
        [...]
        killall auto_printerqueue.sh
        [...]
  reload|force-reload)
        [...]
        killall auto_printerqueue
        /usr/bin/auto_printerqueue.sh&
        [...]
  restart)
        [...]
        killall auto_printerqueue
        /usr/bin/auto_printerqueue.sh&
        [...]
[...]

Popularity: 2% [?]