Necesito obtener el título del dispositivo USB conectado. Puedo hacer eso con lsusb.
udev permite algunas sustituciones cuando escribo reglas: por ejemplo, podemos usar $kernelpara obtener el nombre del dispositivo o $devpathpara obtener la ruta al dispositivo.
Pero el problema es que lsusbdevuelve una cadena así:
Bus 005 Device 032: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
Pero el devpath de udev es:
/devices/pci0000:00/0000:00:1d.0/usb5/5-2
El número de bus es el mismo ( 5), pero los números son diferentes: Device 032parece ser un número lógico (cuando vuelvo a conectar el dispositivo, este número aumenta) y 2parece ser un número de dispositivo físico.
Entonces udev devuelve un número físico, y necesito obtener un número lógico. Entonces, puedo recuperar datos como este:lsusb -D /dev/bus/usb/005/032
Entonces, ¿cómo puedo obtener el número de dispositivo lógico 032por ruta física como /devices/pci0000:00/0000:00:1d.0/usb5/5-2?

udevvs.lsusbysys/devices/..vs./dev/bus/usb/..y, a juzgar por su respuesta, parece saberlo :) ¿Quizás pueda arrojar algo de luz sobre estas dos preguntas? askubuntu.com/questions/342061/power-on-off-usb-ports y askubuntu.com/questions/498950/…/sys/devices/...vs/dev/...:/sysestá poblado por el núcleo, es una representación de la jerarquía real de los dispositivos del núcleo. Udev es un demonio de espacio de usuario que maneja la/sysjerarquía y las poblaciones/dev/...(teniendo en cuenta las reglas). Entonces, udev es completamente responsable de los/devcontenidos.La respuesta aceptada realmente no me ayudó mucho. Finalmente descubrí una forma probando idProduct e idVendor si existen. Aquí hay un script de shell
Esto es lo que obtengo en mi sistema.
Aquí puedo ver que, por ejemplo
0a5c:21e6, que es un dispositivo bluetooth, se asigna a2-1.4.Para una mayor conveniencia, podría definir esto como una función en su shell, algo así como
fuente