我正在尝试在我们的瘦客户端上设置 usbip 以将(几乎所有)USB 设备转发到服务器。我不想转发的是所有输入设备和所有集线器/虚拟设备。
所以我想排除供应商 ID 为 1d6b (Linux Foundation) 的所有内容以及输入设备。
我的第一次尝试是
ATTRS{idVendor}=="1d6b", GOTO="do_nothing"
ENV{ID_INPUT_MOUSE}=="?*", GOTO="do_nothing"
ENV{ID_INPUT_KEYBOARD}=="?*", GOTO="do_nothing"
KERNEL=="?-?"", ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/sbin/add_usbip.sh $kernel"
LABEL="do_nothing"
然而,由于我不明白的原因,第一个GOTO
总是被触发,导致根本没有任何行为。
然后我尝试了
KERNEL=="?-?", ACTION=="add", SUBSYSTEM=="usb", ENV{ID_INPUT_MOUSE}!="?*", ENV{ID_INPUT_KEYBOARD}!="?*", RUN+="/usr/local/sbin/add_usbip.sh $kernel"
和类似地
KERNEL=="?-?"", ACTION=="add", SUBSYSTEM=="usb", ENV{ID_INPUT}!="?*", RUN+="/usr/local/sbin/add_usbip.sh $kernel"
根据我发现的稀缺文档,我认为这是正确的,但它们也只会针对输入设备运行,导致键盘无法使用,因为它被导出到服务器。
请注意,它不能帮助我添加特定的序列号或供应商和产品 ID,因为键盘、鼠标和其他输入设备可能因客户端而异。