lsusb 출력 또는 장치 경로로 장치 파일 이름을 얻는 방법


11

관련 질문 : USB 연결 / 연결 해제 알림

장치가 연결 / 분리되면 즉시 알림을받습니다. 그러나 (거의) 완벽하게하기 위해 나는 또한 장치 이름을 /dev/ttyUSB0, 그리고 더 나은 모든 심볼릭 링크로 가져 오기를 원합니다 .

그러나, udev또는 lsusb, 또는 다른 방법 으로이 정보를 얻는 방법을 찾을 수 없습니다 . 내가 가지고있는 장치의 유일한 ID는 같은 장치 경로 /devices/pci0000:00/0000:00:1d.0/usb5/5-1입니다. 장치 파일 이름을 얻는 방법은 무엇입니까?


1
/dev/disk/by-label 및 by-id 경로를 사용할 수있는 에서 디렉토리를 찾아보십시오 .
lornix

감사하지만 /dev/disk저장 장치 만 포함되어 있습니다. 에 대해 아무 것도 없다고 말하십시오 /dev/ttyUSB0.
Dmitry Frank

사용 사례는 무엇입니까? /dev/ttyUSB0등 의 특별한 점은 무엇입니까 ?
Faheem Mitha

답변:


6

내 UVC 카메라 용 장치를 찾으려고하면 lsusb는 다음을 제공합니다.

Bus 001 Device 004: ID 1e4e:0102 Cubeternet GL-UPC822 UVC WebCam

그러면 장치 파일 이름이됩니다 /dev/bus/usb/001/004(첫 번째 구성 요소는 버스 ID이고 다음은 장치 ID입니다).


5
이것은 장치 노드를 얻을 수있는 방법이 아닙니다 /dev/ttyUSB0.
Dmitry Frank

5

방금 스크립트를 만들었습니다. 예쁘지는 않지만 나를 위해 작동합니다.

다음 구성으로 Arch Linux에서이 스크립트를 테스트했습니다.

$ uname -a
Linux 4.4.13-1-lts #1 SMP Wed Jun 8 16:44:31 CEST 2016 x86_64 GNU/Linux

그리고 내 장치 이름은 /dev/sdb귀하의 장치 이름과 매우 다르며, 그것이 당신에게도 효과가 있기를 바랍니다.

또한이 스크립트는 프로그램 usbutils패키지에 따라 다르며 usb-devices모든 Linux에 기본적으로 설치되어 있다고 생각하지만 잘못되었을 수 있습니다.

스크립트 usbname:

#!/usr/bin/bash

# Input should be a single line from lsusb output:
DATA=$1

# Read the bus number:
BUS=`echo $DATA | grep -Po 'Bus 0*\K[1-9]+'`

# Read the device number:
DEV=`echo $DATA | grep -Po 'Device 0*\K[1-9]+'`

FOUND=false
USB_Serial=""

# Search for the serial number of the PenDrive:
while read line
do
  if [ $FOUND == true ]; then
    USB_Serial=`echo "$line" | grep -Po 'SerialNumber=\K.*'`
    if [ "$USB_Serial" != "" ]; then
      break;
    fi
  fi

  if [ "`echo "$line" | grep -e "Bus=0*$BUS.*Dev#= *$DEV"`" != "" ]; then
    FOUND=true
  fi
done <<< "$(usb-devices)"

# Get the base name of the block device, e.g.: "sdx"
BASENAME=`file /dev/disk/by-id/* | grep -v 'part' | grep -Po "$USB_Serial.*/\K[^/]+$"`

# Build the full address, e.g.: "/dev/sdx"
NAME="/dev/$BASENAME"

# Output the address:
echo $NAME

용법:

$ ./usbname "$(lsusb | grep '<my_usb_label_or_id>')"
/dev/sdb

USB 장치가 블록 장치가 아닌 경우 작동하지 않습니다.
Kyle Falconer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.