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 上执行一些操作?

如何检测USB键盘是不是插入和拔出

bash 脚本 inotifywait 在继续之前等待文件完全写入

如果将笔式驱动器插入 USB 端口,如何使用 c# 检测?

MacOS - 检测相机何时打开/关闭

do 循环的 Bash 脚本,用于检测经过的时间段然后继续