web-dev-qa-db-ja.com

idVendor / idProductを使用してUSBデバイスのディレクトリ/ sys / bus / usb / devices /を検索します

lsusbを使用して印刷された製品とベンダーIDを取得し、/sys/bus/usb/devicesでUSBデバイスのディレクトリを見つけるためにこのIDをチェックするスクリプトを作成しようとしています。

最初は、lsusbによって印刷されたバスとデバイスの番号が適切なフォルダーを指していると考えました。たとえば、Bus = 002およびDevice = 002の場合、USBのディレクトリは/usb/devices/2-2になります。残念ながら、これは事実ではないことが判明しました。

別のスレッドで見つけたこのコマンドを使用して、適切なフォルダーを手動で見つけることができます:

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

ただし、このフォルダーの検索を自動化できるスクリプトが必要です。

4
user2718585

私があなたの質問を理解したら、次のスクリプトが仕事をするはずです:

#!/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