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
ただし、このフォルダーの検索を自動化できるスクリプトが必要です。
私があなたの質問を理解したら、次のスクリプトが仕事をするはずです:
#!/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