USB 장치 UUID를 MODEL 및 VENDOR와 일치시키는 방법은 무엇입니까?

USB 장치 UUID를 MODEL 및 VENDOR와 일치시키는 방법은 무엇입니까?

내 컴퓨터에 연결된 USB 장치를 관리하는 도구를 개발 중입니다.

어느 시점에서는 UUID를 공급업체 및 모델과 일치시켜야 했기 때문에 다음 명령을 사용했습니다.

# lsblk -o UUID,MODEL,VENDOR,TRAN
5A26-0601                            USB3.0 CRW   -SD Generic- usb
                                     Voyager 3.0      Corsair  usb
7936-E126                                                      

궁극적으로 두 가지 방식으로 작동해야 합니다. 때로는 UUID가 하나만 있고 MODEL/VENDOR를 찾아야 하고, 때로는 MODEL 또는 VENDOR가 있고 일치하는 모든 UUID를 찾아야 합니다.

장치의 경우 5A26-0601모든 것이 정돈되어 있습니다. 데이터 필드는 모두 한 행에 있으며 원하는 것은 무엇이든 사용할 수 있습니다 grep.cutawk

다른 장치에서는 그렇지 않습니다. 어떤 이유로 UUID는 나머지 정보 아래에 한 줄입니다. 7936-E126연결된 유일한 장치인 경우에도 마찬가지입니다. UUID 길이는 둘 다 9자를 포함하므로 원인이 될 수 없습니다.

장치 위치와 함께 매개변수를 추가하려고 하면 다음과 같은 유용한 정보만 얻을 수 있습니다 5A26-0601.

# lsblk -o UUID,MODEL,VENDOR,TRAN /dev/disk/by-uuid/5A26-0601
UUID                                 MODEL            VENDOR   TRAN
5A26-0601                            USB3.0 CRW   -SD Generic- usb
# lsblk -o UUID,MODEL,VENDOR,TRAN /dev/disk/by-uuid/7936-E126
UUID                                 MODEL VENDOR TRAN
7936-E126                                         

모든 장치에 필요한 모든 데이터를 얻으려면 어떻게 해야 합니까? 작업에 적합한 도구 인지 lsblk, 잘못 사용하고 있는 것인지, 다른 것을 사용해야 하는지, 아니면 이것이 내가 얻을 수 있는 최선인지, 스크립팅 기술을 향상시키고 결과를 분석해야 하는지를 확인해야 합니다. 지금 받고 있어?

임베디드 환경에서 작동해야 하므로 가능한 가장 간단한 도구를 사용하는 것을 선호합니다.

답변1

내 문제를 성공적으로 해결했습니다 udevadm.

MODEL 및 VENDOR는 속성 및 grep 관련 정보를 쿼리하여 얻을 수 있습니다.

# udevadm info --query property /dev/disk/by-uuid/7936-E126 | grep "ID_VENDOR=\|ID_MODEL="
ID_MODEL=Voyager_3.0
ID_VENDOR=Corsair
# udevadm info --query property /dev/disk/by-uuid/5A26-0601 | grep "ID_VENDOR=\|ID_MODEL="
ID_MODEL=USB3.0_CRW_-SD
ID_VENDOR=Generic-

이제 특정 UUID의 MODEL 및 VENDOR에 쉽고 명시적으로 액세스할 수 있습니다.

현재 이 프로세스를 되돌리는 유일한 방법은 모든 장치를 반복하고 ID_BUS=usb속성과 일치하는 공급업체 또는 모델만 선택하는 것입니다. 그러나 원래 질문의 범위를 고려하면 이 답변으로 충분합니다.

관련 정보