web-dev-qa-db-fra.com

Recherchez le répertoire du périphérique USB / sys / bus / usb / devices / en utilisant idVendor / idProduct

J'essaie de créer un script qui identifie le produit et le fournisseur en utilisant lsusb, puis en vérifiant cet ID pour trouver le répertoire du périphérique USB dans /sys/bus/usb/devices.

Au départ, je pensais que le numéro de bus et de périphérique imprimé par lsusb pointerait vers le dossier approprié. Par exemple, si Bus = 002 et Device = 002, le répertoire de la clé USB sera /usb/devices/2-2. Malheureusement, cela s'est avéré ne pas être le cas.

Je peux trouver manuellement le dossier approprié en utilisant cette commande trouvée dans un autre fil:

for X in /sys/bus/usb/devices/*; do 
    echo "$X"
    cat "$X/idVendor" 2>/dev/null 
    cat "$X/idProduct" 2>/dev/null
    echo
done

Cependant, j'ai besoin d'un script capable d'automatiser la recherche de ce dossier.

4
user2718585

Si j'ai bien compris votre question, le script suivant devrait faire l'affaire:

#!/bin/bash

if [ $# -ne 2 ];then
  echo "Usage: `basename $0` idVendor idProduct"
  exit 1
fi


for X in /sys/bus/usb/devices/*; do 
    if [ "$1" == "$(cat "$X/idVendor" 2>/dev/null)" -a "$2" == "$(cat "$X/idProduct" 2>/dev/null)" ]
    then
        echo "$X"
    fi
done
4
Radu Rădeanu