Bash 脚本检测我的 USB 何时插入,然后将其与目录同步
Posted
技术标签:
【中文标题】Bash 脚本检测我的 USB 何时插入,然后将其与目录同步【英文标题】:Bash script to detect when my USB is plugged in and to then sync it with a Directory 【发布时间】:2011-05-10 12:24:21 【问题描述】:是否有我可以编写的 Bash 脚本和/或守护程序来检测特定的 USB 驱动器,然后将该驱动器与目录同步?
【问题讨论】:
【参考方案1】:为了将来参考,下面是如何在检测到 USB 驱动器时运行 bash 脚本。
连接您的设备并运行lsusb
以检索设备的信息。您应该会看到类似这样的内容:
$ lsusb Bus 002 Device 039: ID 0bc2:2100 Seagate RSS LLC
本例中,设备的vendor ID为0bc2,product ID为2100。
现在您可以使用您选择的文本编辑器创建您的 UDEV 规则。
$sudo vi /etc/udev/rules.d/85-my_usb_device_rule.rules
并添加:
ACTION=="add", SUBSYSTEM=="usb", SYSFSidVendor=="0bc2", SYSFSidProduct=="2100", RUN+="/home/myhome/my_script"
/home/myhome/my_script
是你的脚本的路径,它可以做任何你想做的事情。
为确保检测脚本立即执行,请运行以下命令重新加载 UDEV 规则:
$sudo udevadm 控制 --reload-rules
这是在 Fedora 14 上测试的。
【讨论】:
我在 Crunchbang Linux 11(waldorf)[debian based] 中使用了它,但我必须将 'SYSFS' 更改为 'ATTR' 才能让它工作。这家伙贴了一个调试udev的好方法...jpichon.net/blog/2011/12/debugging-udev-rules【参考方案2】:不是我自己做的,你可以试试udev
这样的规则:
# Hitachi SimpleDrive mini, model HTS545050B9A300 (500 GB USB HDD)
SUBSYSTEM=="block", ATTRsize=="976768002", ATTRSproduct=="SimpleDrive mini", ATTRSserial=="2512009121920487", ACTION=="add", RUN+="/lib/udev/local.usb.hdd.sh add $devpath"
把它放在/etc/udev/rules.d/90-local.rules
或类似的地方,当然取决于你的操作系统。
【讨论】:
是否可以使用 UUID 并取消所有其他属性? 抱歉,我不知道——这还在我自己的待办事项清单上 :) 嗨。有用。谢谢。拔掉的时候怎么办?将“添加”更改为“删除”没有帮助。【参考方案3】:这里是an example python 守护程序,您可以将其用于侦听部分,然后将文件复制到您的目录应该不成问题。
【讨论】:
以上是关于Bash 脚本检测我的 USB 何时插入,然后将其与目录同步的主要内容,如果未能解决你的问题,请参考以下文章
是否可以检测系统何时录制声音,然后在 Python 上执行一些操作?