【发布时间】:2020-02-26 13:05:25
【问题描述】:
我有一个 udev 规则,可以根据它们的序列号在/dev 中为我的 USB 设备生成符号链接(我有多个其他方面相同的设备,但需要可重现的设备端点)。
目前我需要为每个新的序列号添加一条规则,如下所示:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S101", SYMLINK+="ttyS101"
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S102", SYMLINK+="ttyS102"
...
我正在寻找一种使用单个规则执行此操作的方法,所有可动态访问的都是 %k、%n 和 %c,但我发现无法访问任何其他值。使用 PROGRAM="" 可能是一种方式,但我如何从那里访问 ATTRS?
我试过了:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="S101", PROGRAM="/bin/sh -c 'udevadm info /dev/%k | grep ID_SERIAL_SHORT= | cut -d= -f 2'" SYMLINK+="tty%c"
但看起来/dev/%k 在程序运行时不可用,所以这也不起作用。
有什么方法可以将ATTRS{serial} 用于我的SYMLINK+=""?
【问题讨论】:
-
Q 写得很好,但由于这似乎并不依赖于编程语言,而且似乎是 linux conf 文件的魔法,所以在 Unix & Linux 或 Server Fault 上问这个问题似乎更合适. (恕我直言)。祝你好运!
-
udev 规则是一种编程语言。它们有条件和 goto。