#!/bin/bash # GPLed by mattepiu@gentoo.org # script to let use usb scanner as users in scanner group # need to be runned just once. echo "This script need to be run as root (not root group, just root)" echo "" if [ "x$1" == "x--help" ] ; then echo "Script to let udev hook and handle permissions for" echo "usb scanners." echo "" echo "run \"usbscanner auto\" to let it do all automatically." exit 0 fi if [ "x$1" != "xauto" ] ; then echo "Please turn on your usb scanner/s and press ENTER" read $USINPUT echo "" fi BIDENTIFY=`scanimage -L |grep -o -E "libusb:[0-9][0-9][0-9]:[0-9][0-9][0-9]"` COUNT=0 for line in $BIDENTIFY ; do RMLBU=${line#*libusb:} SCAT=${RMLBU/://} FINAL=`udevinfo -a -p $(udevinfo -q path -n /dev/bus/usb/$SCAT) | grep -A 12 -E "KERNEL==" | grep -E "SYSFS{product}"` if [ "x$FINAL" != "x" ] ; then #echo $FINAL if [ "$COUNT" == "0" ] ; then echo "#USB Scanners hooking rules:" > /tmp/usbscanners echo "#-------------------------------------------------------------------------" >> /tmp/usbscanners fi echo "BUS=\"usb\", "$FINAL", GROUP=\"scanner\", MODE=\"664\"" >> /tmp/usbscanners let COUNT=COUNT+1 fi done if [ -e "/tmp/usbscanners" ] ; then echo "#-------------------------------------------------------------------------" >> /tmp/usbscanners else echo "ERROR! no usb scanner detected" exit 1 fi echo "this is what I would put in /etc/udev/rules.d/92-scanner.rules :" echo "" cat /tmp/usbscanners echo "" if [ "x$1" != "xauto" ] ; then USINPUT="" while [ "x$USINPUT" != "xy" ] && [ "x$USINPUT" != "xY" ] && [ "x$USINPUT" != "xn" ] && [ "x$USINPUT" != "xN" ] ; do echo "Do you want me to do this automatically? (Y/N)" read USINPUT done fi #echo "user input is : $USINPUT" if [ "x$1" == "xauto" ] || [ "x$USINPUT" == "xy" ] || [ "x$USINPUT" == "xY" ] ; then echo "Overwriting /etc/udev/rules.d/92-scanner.rules" mv -f /tmp/usbscanners /etc/udev/rules.d/92-scanner.rules || USINPUT="0" if [ "x$USINPUT" == "x0" ] ; then echo "" echo "error: root privileges needed, stopping now." if [ -e "/tmp/usbscanners" ] ; then rm "/tmp/usbscanners" fi exit 1 fi echo "Done" echo "" echo "type udevstart if you want to immediately" echo " use scanner as user in scanner group." else if [ -e "/tmp/usbscanners" ] ; then rm "/tmp/usbscanners" fi exit 1 fi