일련 번호를 읽으려는 USB 스틱이 있습니다. 명령을 호출하면
lsusb -v
이 줄의 출력은 iSerial
다음과 같습니다.
iSerial 3
/proc/scsi/usb-storage
파일을 보려면 다음과 같은 결과가 나타납니다 .
Host scsi10: usb-storage
Vendor: USB
Product: Disk 2.0
Serial Number: 92071573E1272519149
Protocol: Transparent SCSI
Transport: Bulk
Quirks:
한편으로는 이 명령에 직렬 출력이 없지만 lsusb
다른 한편으로는 에서 직렬 출력을 얻지 못하는 이유 /proc/scsi/usb-storage
는 무엇입니까? 시퀀스를 수집하는 이 두 가지 방법의 차이점은 무엇입니까?
답변1
lsusb
USB 장치를 다음과 같이 열려고 시도할 수 있습니다 O_RDWR
(읽기/쓰다모드), 사용자에게 이 작업을 수행할 권한이 없을 수 있습니다(그렇다면 "장치를 열 수 없습니다. 일부 정보가 손실됩니다" 출력 사이에 오류 메시지가 표시되어야 합니다). 루트로 시작하면 lsusb
전체 iSerial 값도 인쇄되어야 합니다.
답변2
일반적으로 다양한 USB 장치(키보드, 마우스, 웹캠...)가 있습니다. lsusb
USB 프로토콜 수준에서 연결된 장치를 처리합니다.
일부 USB 장치는 저장 장치입니다(USB 메모리 스틱, USB 하드 드라이브...). 그들은 USB 프로토콜 외에 다양한 프로토콜(다소 SCSI)을 이해합니다. 이 프로토콜에서 USB 저장 장치에는 ATA 장치와 마찬가지로 일련 번호가 있습니다. 이것이 에서 볼 수 있는 것입니다 /proc/scsi/usb-storage
.
iSerial
보시는 숫자는 lsusb
이번 사건과 관련이 없습니다.
이것이 바로 한 가지 방법을 사용하면 관심 있는 일련번호를 볼 수 있지만 다른 방법을 사용하면 볼 수 없는 이유입니다. 그렇기 때문에 lsusb
관심 있는 일련 번호를 얻는 데 사용할 수 없습니다 .
답변3
verbose 플래그를 사용할 수 있지만 lsusb
반드시 사용해야 합니다. sudo
그렇지 않으면 순서가 올바르지 않게 됩니다.
sudo lsusb -v
너무 자세한 경우 다음을 실행하여 lsusb
장치 ID를 가져옵니다.
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 012: ID 1ab1:0e11 Rigol Technologies
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
그런 다음 플래그를 lsusb
사용하여 실행하여 -s
지정된 장치만 표시하고 일련 번호에 대한 grep을 표시합니다.
따라서 Rigol 장치의 일련 번호는 다음과 같습니다.
$ sudo lsusb -s 012 -v|grep -i iserial
iSerial 3 DP8C221100000
lsusb
이 --help
플래그 사용 에 대한 추가 정보:
$ lsusb --help
Usage: lsusb [options]...
List USB devices
-v, --verbose
Increase verbosity (show descriptors)
-s [[bus]:][devnum]
Show only devices with specified device and/or
bus numbers (in decimal)
-d vendor:[product]
Show only devices with the specified vendor and
product ID numbers (in hexadecimal)
-D device
Selects which device lsusb will examine
-t, --tree
Dump the physical USB device hierarchy as a tree
-V, --version
Show version of program
-h, --help
Show usage and help