我想在插入USB设备时运行特定的脚本。但是,当我有一个USB设备时,什么也没有发生.
下面是我想运行的脚本(/home/update.sh
):
#!/bin/sh
netplan apply
在同一个目录中,我通过运行以下命令使其可执行:
sudo chmod +x update.sh
我更新了udev规则文件(/etc/udev/rules.d/70-snap.snapd.rules
),在LABEL="mm_mbm_check"
之后添加了以下行:
ACTION=="add", ATTRS{idVendor}=="`****`", ATTRS{idProduct}=="`****`", RUN+="/home/update.sh"
据我所知,我用 * 来允许任何usb设备。
在更新这个udev规则文件之后,我运行以下脚本来应用规则:
sudo service udev restart
以下是运行restart udev命令(tail -f /var/log/syslog
)后来自syslog的日志:
Nov 8 19:52:20 ubuntu systemd-udevd[23328]: /usr/lib/udev/rules.d/90-pi-bluetooth.rules:14 Invalid value "/bin/sh -c 'ALIASES=/proc/device-tree/aliases; if cmp -s $ALIASES/uart0 $ALIASES/serial0; then echo 0;elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then echo 1; else exit 1; fi'" for PROGRAM (char 58: invalid substitution type), ignoring, but please fix it.
Nov 8 19:52:20 ubuntu systemd-udevd[23328]: /usr/lib/udev/rules.d/90-pi-bluetooth.rules:27 Invalid value "/bin/sh -c 'ALIASES=/proc/device-tree/aliases; if [ -e /dev/ttyAMA0 ]; then exit 1; elif cmp -s $ALIASES/uart0 $ALIASES/serial0; then echo 0;elif cmp -s $ALIASES/uart0 $ALIASES/serial1; then echo 1; else exit 1; fi'" for PROGRAM (char 97: invalid substitution type), ignoring, but please fix it.
Nov 8 19:52:20 ubuntu systemd-udevd[23328]: /usr/lib/udev/rules.d/90-pi-bluetooth.rules:38 Invalid value "/bin/sh -c 'ALIASES=/proc/device-tree/aliases; if cmp -s $ALIASES/uart1 $ALIASES/serial0; then echo 0; elif cmp -s $ALIASES/uart1 $ALIASES/serial1; then echo 1; else exit 1; fi '" for PROGRAM (char 58: invalid substitution type), ignoring, but please fix it.
最后,当我将USB设备插入乌藨子时,什么也没有发生。
我的配置:
- Raspberry Pi 3
- Ubuntu Server 21.10
谢谢你的帮助!
1条答案
按热度按时间f1tvaqid1#
除了文件
/etc/udev/rules.d/70-snap.snapd.rules
中添加的规则之外,所有内容都是正确的。为了使它工作,我在
/etc/udev/rules.d/
目录中添加了一个新文件90-usb.rules
,包括以下规则:而不是
我使用以下脚本重新启动udev:
现在,当我插入任何USB设备时,我的脚本都在运行。