si je lance le commun lsusb
je reçois quelque chose comme:
Bus 003 Périphérique 003: ID 1a86: 7523 Adaptateur USB-série HL-340 de QinHeng Electronics
mais il ne montre pas le chemin du fichier de périphérique (c'est-à-dire ttyUSB0). Existe-t-il une commande qui fait cela?
à propos de dmesg
et udevadm info
ils sont trop verbeux.
Je préférerais une sortie plus simple, le mieux serait d’ajouter uniquement le chemin du fichier de périphérique à la sortie de lsusb, quelque chose comme:
Bus 003 Appareil 003: ID 1a86: 7523 Adaptateur USB-série HL-340 de QinHeng Electronics/dev/ttyUSB0
beaucoup de copier/coller m'a amené à nouveau ici dans l'espoir que cela serait utile pour les autres et aussi pour améliorer mon code
J'ai utilisé le code presque parfait de la réponse dans cette question et ajouté/enlevé quelques petites choses
#!/bin/bash
for sysdevpath in $(find /sys/bus/usb/devices/usb*/ -name dev); do
(
syspath="${sysdevpath%/dev}"
devname="$(udevadm info -q name -p $syspath)"
[[ "$devname" == "bus/"* ]] && continue
[[ "$devname" == "input/"* ]] && continue
[[ "$devname" == "video0"* ]] && continue
eval "$(udevadm info -q property --export -p $syspath)"
[[ -z "$ID_SERIAL" ]] && continue
busnum="$(udevadm info -a -p $(udevadm info -q path -n /dev/$devname) | awk -F "==" '/busnum/ {gsub("\"","");print $2}' | head -1)"
devnum="$(udevadm info -a -p $(udevadm info -q path -n /dev/$devname) | awk -F "==" '/devnum/ {gsub("\"","");print $2}' | head -1)"
bus_dev=${busnum}:${devnum}
lsusb="$(lsusb -s $bus_dev)"
echo "$lsusb - /dev/$devname"
)
done
sortie:
Périphérique de bus 003 005: ID 1a86: 7523 Adaptateur USB-série HL-340 de QinHeng Electronics -/dev/ttyUSB0
NOTE: je n'ai aucune expérience unix, donc si vous voulez améliorer le code, faites-le!