【问题标题】:Bash script to detect when my USB is plugged in and to then sync it with a DirectoryBash 脚本检测我的 USB 何时插入,然后将其与目录同步
【发布时间】:2011-05-10 12:24:21
【问题描述】:

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

【问题讨论】:

    标签: linux bash usb udev


    【解决方案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", SYSFS{idVendor}=="0bc2", SYSFS{idProduct}=="2100", RUN+="/home/myhome/my_script"

    /home/myhome/my_script 是你的脚本的路径,它可以做任何你想做的事情。

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

    $sudo udevadm 控制 --reload-rules

    这是在 Fedora 14 上测试的。

    【讨论】:

    【解决方案2】:

    不是我自己做的,你可以试试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"
    

    把它放在/etc/udev/rules.d/90-local.rules 或类似的地方,当然取决于你的操作系统。

    【讨论】:

    • 是否可以使用 UUID 并取消所有其他属性?
    • 抱歉,我不知道——这还在我自己的待办事项清单上 :)
    • 嗨。有用。谢谢。拔掉的时候怎么办?将“添加”更改为“删除”没有帮助。
    【解决方案3】:

    这里是an example python 守护程序,您可以将其用于侦听部分,然后将文件复制到您的目录应该不成问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多