每次插入 USB 调制解调器时,有没有办法运行脚本?

每次插入 USB 调制解调器时,有没有办法运行脚本?

我希望每次插入 USB 调制解调器时执行一个 shell 脚本。

我该如何做呢?

答案1

您可以使用一些 udev 规则来实现这一点,正如@Rinzwind 所建议的那样。

首先,将脚本保存到其他用户可以访问的地方。例如,您可以将其保存为/usr/local/bin/script.sh

现在,让其他人可以访问该脚本。

sudo chmod 555 /usr/local/bin/script.sh

现在,插入 USB 调制解调器,然后运行lsusb。以下是示例输出:

$ lsusb
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 002: ID 0fcf:1008 Dynastream Innovations, Inc. Mini stick Suunto
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

找到末尾带有调制解调器名称的行。现在,找到格式中靠近中间的部分ID XXXX:####XXXX####部分将是供应商 ID设备ID分别。

对于此示例的第三行,即… ID 0fcf:1008 Dynastream …,供应商 ID 为0fcf,设备 ID 为1008。您的设备将具有这些 ID 的不同值。

现在,我们将使用这些 ID 为 udev 创建规则。

现在,使用 udev 为该设备创建一条规则。

使用以下方式创建规则文件

sudo nano /etc/udev/rules.d/90-local.rules

添加以下行:

ACTION=="add", SUBSYSTEM=="usb", ATTRS{vendor}=="0xXXXX", ATTRS{device}=="0x####", RUN+="/usr/local/bin/script.sh"

替换XXXX供应商 ID并将####其替换为产品编号从早些时候开始。

现在,强制 udev 重新加载其规则(或者您可以跳过此步骤并重新启动)

udevadm control --reload-rules
sudo service udev restart

您已经完成了!

资料来源:SU 上有关 udev 规则的类似问题创建 udev 规则

相关内容