Tomato Shibby 中的热插拔脚本

Tomato Shibby 中的热插拔脚本

我在 Asus RT-AC68R/U 上使用 Advanced Tomato。这是 Shibby Tomato,只做了一些 GUI 修改。我想通过 USB 测量单元连接并为其创建专用的唯一设备。此时,Tomato 创建名为 /dev/usbdevX.Y 的设备,其中 X 和 Y 是随机数。以下是我的热插拔脚本的一部分。这不是最终版本,只是我解决问题的调查的一部分。

PRODID="5555/1/600"
SYMLINK="arco"

if [ "${PRODUCT}" = "${PRODID}" ];
then if [ "${ACTION}" = "add" ];
then
DEVICE_NAME=$(ls /sys/$DEVPATH)
echo $DEVICE_NAME > /tmp/arco1
echo $DEVPATH > /tmp/arco2
if [ -z ${DEVICE_NAME} ];
then echo " Hotplug Warning DEVICE_NAME is empty" > /tmp/arco
exit
fi

变量 DEVPATH 返回值:

/sys/devices/pci0000:00/0000:00:0b.0/usb3/3-2/3-2:1.0

变量 DEVICE_NAME 返回 /sys/devices/pci0000:00/0000:00:0b.0/usb3/3-2/3-2:1.0 目录的内容列表。

lsusb 返回该设备值:

Bus 003 Device 007: ID 5555:0001

子目录 /sys/devices/pci0000:00/0000:00:0b.0/usb3/3-2/3-2:1.0 包含以下文件:

root@asus:/sys/devices/pci0000:00/0000:00:0b.0/usb3/3-2/3-2:1.0# ls
bAlternateSetting     bInterfaceProtocol    bus                          interface             supports_autosuspend
bInterfaceClass       bInterfaceSubClass    ep_02                 modalias              uevent
bInterfaceNumber      bNumEndpoints         ep_81                 subsystem

并且文件 uevent 包括:

DEVTYPE=usb_interface
PHYSDEVBUS=usb
DEVICE=/proc/bus/usb/003/007
PRODUCT=5555/1/600
TYPE=0/0/0
INTERFACE=255/255/255
MODALIAS=usb:v5555p0001d0600dc00dsc00dp00icFFiscFFipFF

请注意以下行:

DEVICE=/proc/bus/usb/003/007

对应于该设备的 lsusb 输出。因此,这肯定是我的新连接设备

我的问题是。在这种情况下,我如何为这种随机创建的设备创建到 /dev/arco 的符号链接?

答案1

最后我找到了解决方案。这是我的工作热插拔脚本。它创建 /dev/arco 的符号链接到新创建的名为 /dev/usbdev3.Y 的“通用”设备,其中 Y 是随机数。我使用 Advanced Tomato,因此脚本添加到 NAS&USB -> USB 支持 -> 热插拔脚本部分

PRODID="5555/1/600"
SYMLINK="arco"

if [ "${PRODUCT}" = "${PRODID}" ];
then if [ "${ACTION}" = "add" ];
then
echo $DEVICE > /tmp/arco1


if [ -z ${DEVICE} ];
then echo " Hotplug Warning DEVICE is empty" > /tmp/arco
exit
fi

usb=`echo -n $DEVICE | tail -c 1`
echo " Hotplug Device name of ARCO is $DEVICE" > /tmp/arco
ln -s /dev/usbdev3.$usb /dev/${SYMLINK}
echo " Hotplug Symlink from $DEVICE to /dev/${SYMLINK} created" > /tmp/arco
fi
fi

if [ "${PRODUCT}" = "${PRODID}" ];
then if [ "${ACTION}" = "remove" ];
then rm /dev/${SYMLINK}
echo " Hotplug Symlink /dev/${SYMLINK} removed" > /tmp/arco
fi
fi 

就这样 ;-)

相关内容