#!/bin/sh # /etc/hotplug.d/usb/usb-stub.hotplug # This an example of how to get a 'hook' into a USB event. # You may need to create the directory /etc/hotplug.d/usb # Then place this file inside the directory and make sure it's executable # the name doesn't matter and all the echos are just verbosity for # debugging. The main thing is to run your external script if certain # conditions are met. The example script here is /usr/sbin/do-hotmnt # We have to export any of the variables we need to exec and background # the new process so this hook can exit. # ACTION DEVICE and INTERFACE are probably all we need (maybe DEVFS) cd /etc/hotplug . ./hotplug.functions DEBUG=yes export DEBUG debug_mesg "arguments ($*) env (`env`)" echo "Hello from /etc/hotplug.d/usb/usb-stub.hotplug" >> /var/log/messages case $ACTION in add|register) # Stub echo "Adding DEVICE: $DEVICE" >> /var/log/messages #echo "SUBSYSTEM is: $SUBSYSTEM" >> /var/log/messages #echo "DEVPATH is: $DEVPATH" >> /var/log/messages #echo "DEVICE=$DEVICE" >> /var/log/messages # echo "PHYSDEVDRIVER is: $PHYSDEVDRIVER" >> /var/log/messages #echo "ACTION=$ACTION" >> /var/log/messages #echo "PRODUCT=$PRODUCT" >> /var/log/messages #echo "INTERFACE=$INTERFACE" >> /var/log/messages #echo "TYPE is: $TYPE" >> /var/log/messages #echo "DEVFS=$DEVFS" >> /var/log/messages REMOVER=/var/run/usb/$(echo "$DEVICE" | sed -e 's;/;%;g') echo "REMOVER is: $REMOVER" >> /var/log/messages if [[ `echo $INTERFACE |grep "8"` ]] ; then echo "This is a USB mass storage device using SCSI emulation" >> /var/log/messages # export $INTERFACE $PRODUCT $ACTION #exec /usr/sbin/do-hotmnt & #exec /usr/bin/mounter usb #exec /etc/hotplug.d/usb/usb-storage #exit 0 if [ ! -d /mnt/usbstorage ]; then echo "Creating mount-point" >> /var/log/messages mkdir /mnt/usbstorage fi #echo "Waiting 5 seconds for drivers to register" >> /var/log/messages sleep 5 echo -en "" > /tmp/hotplug.log 2>&1 if [ "$SUB_DEVICE" = "" ]; then SUB_DEVICE=`dmesg | tail -n 10 | grep ^sd.: | cut -d: -f1 | tail -n 1` export SUB_DEVICE fi DELAY_COUNTER=0 DEVICE_FOUND="" while [ "$DEVICE_FOUND" = "" ] && [ $DELAY_COUNTER -lt 30 ]; do let "DELAY_COUNTER=$DELAY_COUNTER + 1" # DEVICE_FOUND=`ls -1 /dev/ | grep $SUB_DEVICE` DEVICE_FOUND=`blkid | grep $SUB_DEVICE` sleep 1 echo "Waiting for the device to register $DELAY_COUNTER" >> /tmp/hotplug.log 2>&1 echo "Waiting for the device to register $DELAY_COUNTER" >> /var/log/messages done NOT_MOUNTED=1 mount -t ext2 -o user,exec,sync /dev/$SUB_DEVICE /mnt/usbstorage >> /tmp/hotplug.log 2>&1 NOT_MOUNTED=$? if [ $NOT_MOUNTED -ne 0 ]; then mount -t ext2 -o user,exec,sync /dev/$SUB_DEVICE"1" /mnt/usbstorage >> /tmp/hotplug.log 2>&1 NOT_MOUNTED=$? fi if [ $NOT_MOUNTED -ne 0 ]; then mount -t vfat -o user,exec /dev/$SUB_DEVICE /mnt/usbstorage >> /tmp/hotplug.log 2>&1 NOT_MOUNTED=$? fi if [ $NOT_MOUNTED -ne 0 ]; then mount -t vfat -o user,exec /dev/$SUB_DEVICE"1" /mnt/usbstorage >> /tmp/hotplug.log 2>&1 NOT_MOUNTED=$? fi if [ $NOT_MOUNTED -eq 0 ]; then echo "xtdesk.restart" >> /tmp/hotplug.log echo "Mount uccessful!" >> /var/log/messages # cp /etc/X11/xtdesktop/usbmedia.lnk.hide /etc/X11/xtdesktop/usbmedia.lnk ln -sf /etc/hotplug.d/usb/usb-storage.off $REMOVER xtdesk.restart add_device # ln -sf /etc/hotplug.d/usb/usb-storage.off "$REMOVER" mesg REMOVER Created for $SUB_DEVICE # echo make REMOVER in $REMOVER else echo "Failed to mount SUB_DEVICE=$SUB_DEVICE" >> /tmp/hotplug.log fi fi ;; remove|unregister) # Stub echo "Removing DEVICE: $DEVICE " >> /var/log/messages #echo "SUBSYSTEM is: $SUBSYSTEM" >> /var/log/messages #echo "DEVPATH is: $DEVPATH" >> /var/log/messages #echo "DEVICE=$DEVICE" >> /var/log/messages #echo "PHYSDEVDRIVER is: $PHYSDEVDRIVER" >> /var/log/messages #echo "ACTION=$ACTION" >> /var/log/messages #echo "PRODUCT=$PRODUCT" >> /var/log/messages #echo "INTERFACE=$INTERFACE" >> /var/log/messages #echo "TYPE is: $TYPE" >> /var/log/messages #echo "DEVFS is: $DEVFS" >> /var/log/messages #echo "REMOVER is: $REMOVER" >> /var/log/messages ;; esac