每次插入 USB 设备时如何运行 Bash 脚本?

每次插入 USB 设备时如何运行 Bash 脚本?

我正在使用 Ubuntu 18.04,每次插入新的 USB 设备(与设备类型相互依赖)时我都需要运行一个 Bash 脚本。

附言:我发现其他答案可以适用于指定的 USB 设备,但我需要适用于任何可能的 USB 设备。

答案1

从 udev 规则启动 systemd.service

udev monitor允许您监视内核 uevents 并将 devpaths 打印到控制台,然后可以使用它来udevadm info -a --path=''打印链中所有设备的所有 sysfs 属性。

udevadm monitor --environment --udev让您监视规则处理后由 udev 事件设置的环境变量。

$ cat /etc/udev/rules.d/99-usb-autorun.rules
# Start USB autorun systemd .service
ENV{DEVTYPE}=="usb_device", \
TAG+="systemd", ENV{SYSTEMD_WANTS}="usb_autorun.service"

(不要忘记重新加载您的规则udevadm control --reload && udevadm trigger)。

...和/etc/systemd/system/usb_autorun.service

[Unit]
Description=USB Autorun.

[Service]
Type=oneshot
ExecStart=/opt/bin/usb_autorun.sh

答案2

我开发了一个 Python 脚本,用于监听特定设备并在设备连接时执行操作,例如:

pip install udev_monitor
udev_monitor.py --devices 0665:5161 --filters=usb --action /root/some_script.sh

该操作将作为参数找到设备。

你可以找到完整的来源这里

还有一个 systemd 单元文件和一个配置文件示例,因此您可以运行监控特定设备的服务。

相关内容