Bash脚本用于检测USB插入的时间,然后将其与目录同步

16 linux bash usb udev

是否有可以编写的Bash脚本和/或守护程序,它将检测特定的USB驱动器,然后将该驱动器与目录同步?

sly*_*oty 20

为了将来参考,这里是如何在检测到USB驱动器时运行bash脚本.

连接您的设备并运行lsusb以检索设备的信息.你应该看到类似的东西:

$ lsusb
Bus 002 Device 039: ID 0bc2:2100 Seagate RSS LLC
Run Code Online (Sandbox Code Playgroud)

在这种情况下,设备的供应商ID为0bc2,产品ID为2100.

现在,您可以使用您选择的文本编辑器创建UDEV规则.

$ sudo vi /etc/udev/rules.d/85-my_usb_device_rule.rules

并添加这个:

ACTION =="add",SUBSYSTEM =="usb",SYSFS {idVendor} =="0bc2",SYSFS {idProduct} =="2100",RUN + ="/ home/myhome/my_script"

/home/myhome/my_script 是你的脚本的路径,它会做你想做的任何事情.

要确保检测脚本立即执行,请运行此命令以重新加载UDEV规则:

$ sudo udevadm control --reload-rules

这是在Fedora 14上测试的.

  • 我在Crunchbang Linux 11(waldorf)[debian based]中使用了这个,但我不得不将'SYSFS'更改为'ATTR'以使其工作.这家伙发布了调试udev的好方法... http://www.jpichon.net/blog/2011/12/debugging-udev-rules/ (6认同)

Pio*_*sen 6

我自己没有这样做,但你可以尝试这样的udev规则:

# Hitachi SimpleDrive mini, model HTS545050B9A300 (500 GB USB HDD)
SUBSYSTEM=="block", ATTR{size}=="976768002", ATTRS{product}=="SimpleDrive mini", ATTRS{serial}=="2512009121920487", ACTION=="add", RUN+="/lib/udev/local.usb.hdd.sh add $devpath"
Run Code Online (Sandbox Code Playgroud)

将它放在/etc/udev/rules.d/90-local.rules或类似的地方,当然可靠的操作系统.