konfigurační soubor by mělo stačit upravit takto:
skriptík v podstatě načte z /sys/class/usbmisc/lpX/device/ ze souboru ieee1284_id informace o tiskárně a podle názvu tiskárny vytvoří smylink do /dev. Například tedy /dev/ML-1520 a /dev/CLP-320.
Edit: Tak ještě jedna úprava, původní skript nechával symlinky a pokud uživatel znovu zapnul tiskárny ve špatném pořadí, tak to nefungovalo (soubor ieee1284_id v době odpojování neexistoval). Nově si skript vytváří v /tmp/printers soubory s názvy tiskáren, tak aby věděl kterou při odebrání smazat (uznávám šlo by to jistě i lépe).
vyzobneme název tiskárny (MFG:Samsung;CMD:GDI;MDL:ML-1520;CLS:PRINTER;MODE:GDI;STATUS:IDLE;CODE:10003)
cut -d: -f4 /sys/class/usbmisc/$DEVICENAME/device/ieee1284_id
odebereme ";CLS"
sed -e 's/;.*//'
odebere mezeru a vše za ní (příklad názvu "CLP-320 Series") sed -e 's/ .*//'
A nyní kompletní skript:
#!/bin/sh
case "$ACTION" in
add)
[ -n "${DEVNAME}" ] && [ "${DEVNAME##usb/lp*}" = "" ] && {
chmod 660 /dev/"$DEVNAME"
chgrp lp /dev/"$DEVNAME"
PRINTERNAME=`cut -d: -f4 /sys/class/usbmisc/$DEVICENAME/device/ieee1284_id | sed -e 's/;.*//' | sed -e 's/ .*//'`
ln -s /dev/$DEVNAME /dev/$PRINTERNAME
mkdir /tmp/printers
echo "/dev/$PRINTERNAME" > /tmp/printers/$DEVICENAME
}
;;
remove)
[ -n "${DEVNAME}" ] && [ "${DEVNAME##usb/lp*}" = "" ] && {
# device is gone
PRINTERNAME=`cat /tmp/printers/$DEVICENAME`
rm $PRINTERNAME
rm /tmp/printers/$DEVICENAME
}
;;
esac
Žádné komentáře:
Okomentovat