在没有 sudo 的情况下使用 lsusb 获取 iSerial

Con*_*nan 5 permissions sudo lsusb

在我的 sudoer 用户(非 root)下,我可以看到我的设备lsusb。但是,要查看 iSerial 编号,我需要发出lsusb -v,我确实打印了很多信息,但是输出中也会显示消息“无法打开设备,某些信息将丢失”。iSerial 是缺失的信息之一。使用sudo lsusb -v效果很好。

我尝试过sudo chmod -R o+rw /dev/bus/usb,在此之后我可以在没有 sudo 的情况下检查 iSerial。但是重启后就不能用了。插入新设备时也无济于事。

有没有更好的方法来做到这一点?

meu*_*euh 1

如果 udev 注意到了该设备,您也许能够从 udev 获取信息。例如我有一个 UPS 设备

$ lsusb | grep UPS
Bus 004 Device 041: ID 0463:ffff MGE UPS Systems UPS
Run Code Online (Sandbox Code Playgroud)

使用总线和设备号 (004/041),我无需成为 root 即可从 udevadm 获取信息。这包括与 iSerial 值相同的 ID_SERIAL_SHORT 值。

$ udevadm info -p $(udevadm info -q path -n /dev/bus/usb/004/041)
P: /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.4/4-1.4.2
N: bus/usb/004/041
E: DEVNAME=/dev/bus/usb/004/041
E: DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.4/4-1.4.2
E: DEVTYPE=usb_device
E: DRIVER=usb
E: ID_BUS=usb
...
E: ID_SERIAL=EATON_ELLIPSE_BX9M050Z1
E: ID_SERIAL_SHORT=BX9M050Z1
...

$ sudo lsusb -v -s 004:041 | grep iSerial
iSerial                 4 BX9M050Z1
Run Code Online (Sandbox Code Playgroud)