连接 USB 设备时运行脚本

Nul*_*ter 14 usb

每当 Pendrive 连接到我的系统时,我都会尝试运行脚本。我遵循了这个这个问题,它正在工作,但仍然存在一些问题。

这是我的udev规则文件:

ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"
Run Code Online (Sandbox Code Playgroud)

这是我的脚本:

ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 每当我插入我的USB设备,执行脚本,因为文件env.out中生成/tmp,而是从USB设备中的数据不会被复制到测试目录

    如果我手动运行脚本,它工作正常!为什么?

  2. 如何使我的规则文件更通用,以便它适用于任何连接而不知道其 ID 的 USB 设备?

我的想法是在连接时自动将所有数据从任何连接的 USB 设备复制到我的计算机。

Nul*_*ter 10

回答我自己的问题:

1. 脚本没有运行,因为它需要sudo运行权限。

要解决此问题,请将此脚本sudo设为可执行:

现在我们可以sudo在这个脚本中使用而无需输入sudo密码。但是,这可能会导致一些安全问题,所以请参考这个问题:如何在脚本中执行命令而不被要求输入密码?

2. 回答我的第二个问题:

要使此脚本适用于连接的任何 USB 设备,请将udev规则文件的内容更改为:

ACTION=="add", ATTRS{idVendor}=="`****`", ATTRS{idProduct}=="`****`", RUN+="/usr/local/my_script.sh"
Run Code Online (Sandbox Code Playgroud)

星号 ( *) 表示应该为每个连接的 USB 设备执行此操作。

就是这样!确保脚本是可执行的并插入您的 USB!

请享用!