Jeg lavede dette quick'n dirty script:
Det køres i kron hvert minut, og det looper selv 5 gange over et sleep
10, så det kører ca hvert 10. sekund. (Maskinen har ikke så meget at
lave...)
Hvis der er noget i køen (lpstat)
touch et flag.
Hvis printeren er online (usbconfig)
enable printeren
ellers
tænd den (sispmctl)
ellers
Hvis flaget er ældre end 10 minutter, slet det og disable printeren
sov 10 sekunder og loop igen
Jeg vil gerne enable/disable printeren, så cups ikke skriver til
printeren før den er klar. Men der er rettighedsproblemer for root at
gøre det.
Det "koster" nok lige meget at enable printeren hele tiden, frem for at
teste om den er enablet, og kun enable hvis den er disablet.
Indtil printeren kommer online, giver powerswitchen et bip hvert 10.
sekund, hvor scriptet sender en tænd-kommando til den. Men det er
faktisk en fordel, så bliver man opmærksom på at printeren skal bruges,
hvis nogen er kommet til at slukke på selve printeren.
Igen, man kunne spørge switchen om den var tændt, før man tændte den,
men det koster nok lige så meget som at blive ved med at tænde den.
Her er scriptet:
#!/bin/sh
PRINTER=laser
for n in 1 2 3 4 5
do
if /usr/local/bin/lpstat $PRINTER|grep :
then
touch /tmp/powerflag
if /usr/sbin/usbconfig|grep -i laserjet
then
/usr/local/sbin/cupsenable $PRINTER
else
/usr/local/bin/sispmctl -d1 -o1
fi
else
find /tmp -name powerflag -mmin +10 -delete -exec
/usr/local/bin/sispmctl -d1 -f1 \; -exec /usr/local/sbin/cupsdisable
$PRINTER \;
fi
sleep 10
done
Man kunne udvide scriptet; hvis printeren har været tændt længe, og der
stadig er noget i køen, instrueres asterisk til at ringe op, og fortælle
mig der er et problem
Leif