연결된 장치가 어떤 USB 포트인지 식별

연결된 장치가 어떤 USB 포트인지 식별

저는 USB 플래시 메모리의 대량 복제와 대량 테스트를 위한 사용자 정의 Bash 스크립트를 작업 중입니다( 를 사용 f3).

어떤 USB 포트에 펜드라이브가 연결되어 있는지 식별할 수 있는지 궁금합니다.

번호가 매겨진 포트가 있는 USB 허브가 있습니다. 무언가가 연결되어 있는지 여부와 그것이 무엇인지 식별하고 알 수 있는 정적 주소가 있는 경우(기본적으로 해당 USB 포트에 해당하는 /dev/sd* 파일) 사용자가 훨씬 쉽게 만들 수 있습니다. 무슨 일이 일어나고 있는지 파악하고 전체 배치가 처리될 때까지 기다리지 않고 프로세스 초기에 불량 드라이브를 제거한 다음 좋은 드라이브에서 불량 드라이브를 분류하려고 시도합니다(이것이 제가 지금 수행하는 방법입니다).

주변을 검색해 보았으나 내가 달성하고자 하는 것과 일치하는 것이 아무것도 없는 것 같아서 이 맥락에서 직접 도움을 요청하기로 결정했습니다.

이제 나는 /dev/sd* 노드 이름으로 드라이브를 식별하는데, 사용자는 그것이 무엇인지 전혀 모릅니다. 이를 허브의 USB 포트에 매핑할 수 있다면 USB 포트를 기반으로 정보를 제공할 수 있으며 사용자는 포트 5에 잘못된 드라이브가 연결되어 있다는 것을 알 수 있으며 나머지 프로세스를 방해하지 않고 이를 제거할 수 있습니다. .

그런 다음 이 작업을 일괄적으로 중지하고 모든 포트가 루프에서 동시에 작동하도록 할 수도 있습니다. 사용자는 항상 드라이브를 연결하고 뺄 수 있으며 허브 포트 번호로 무엇이 무엇인지 추적할 수 있으므로 작업 흐름이 크게 향상될 수 있습니다. .

그래서 기본적인 질문: USB 포트와 이 포트에 연결된 USB 플래시 메모리를 어떻게 식별할 수 있습니까?

답변1

당신 udevadm장치 경로어떤 장치의. 이는 의 심볼릭 링크를 검사하여 수행되므로 /sys/수동으로 수행할 수도 있습니다(그러나 사용하기가 더 쉽습니다 udevadm).

예를 들어, 내 시스템의 외부 USB 허브에 연결된 USB 스틱은 다음을 생성합니다.

$ udevadm info -q path -n /dev/sdh
/devices/pci0000:00/0000:00:1d.0/usb3/3-1/3-1.1/3-1.1.3/3-1.1.3.2/3-1.1.3.2:1.0/host7/target7:0:0/7:0:0:0/block/sdh

USB 트리와 비교해보면 알 수 있듯이,

$ lsusb -t
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=ehci-pci/2p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/8p, 480M
        |__ Port 1: Dev 26, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 3: Dev 29, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 2: Dev 31, If 0, Class=Mass Storage, Driver=usb-storage, 480M
                |__ Port 4: Dev 30, If 0, Class=Mass Storage, Driver=usb-storage, 480M
...

경로 부분 3-1.1.3.2에 따르면 버스 3에서는 포트 1(사우스브리지), 다시 포트 1(마더보드), 포트 3(여전히 마더보드), 외부 USB 허브의 포트 2를 통과합니다. 이 허브의 포트 4는 SD 카드 리더에 사용됩니다.

따라서 USB 허브가 연결된 방식에 따라 비슷한 작업을 수행하고 관심 있는 마지막 포트를 추출해야 합니다.

답변2

이는 명령에 장치 이름을 제공하기 위해 장치 이름을 모르는 경우(장치에 대해 알려주기 위해) 허용되는 솔루션에 대한 대안입니다.

전에USB 플래시 드라이브를 삽입하고 다음을 실행합니다.

udevadm monitor

스틱을 삽입하면 Kernel & Udev 메시지가 장황하게 표시되고 마지막 줄에서 호스트가 USB 스틱을 어떻게 보는지 알려줍니다.

18.04 udevadm 모니터 명령 피드백

답변3

/dev/disk/by-path노드 에 대한 심볼릭 링크가 포함되어 있는 것으로 보이며 /dev/sd*이를 정확하게 알아내는 데 사용할 수 있습니다.

명령 을 실행하면 file /dev/disk/by-path/*모든 /dev/sd*노드와 해당 물리적 ​​주소가 나열됩니다. 나는 그것을 아주 쉽게 헤쳐나갈 수 있을 것입니다.

관련 정보