web-dev-qa-db-ja.com

接続されているUSBディスクのデバイス名を取得する

接続されているすべてのUSBディスクのデバイス名(つまり、sdd)を取得する必要があります。

3つのUSBディスクが接続されており、2つのSATAディスクがあります。

$ find /sys/devices/ -name block        
/sys/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/Host5/target5:0:0/5:0:0:0/block
/sys/devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/Host6/target6:0:0/6:0:0:0/block
/sys/devices/pci0000:00/0000:00:14.0/usb4/4-5/4-5:1.0/Host4/target4:0:0/4:0:0:0/block
/sys/devices/pci0000:00/0000:00:1f.2/ata1/Host0/target0:0:0/0:0:0:0/block
/sys/devices/pci0000:00/0000:00:1f.2/ata2/Host1/target1:0:0/1:0:0:0/block

SATAディスクを無視したいのですが、すべてのUSBディスクをリストする必要があります。

ターミナルでlsを使用すると、sddが得られます。

$ ls /sys/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/Host5/target5:0:0/5:0:0:0/block
sdd

しかし、私はこれをスクリプトで使用する必要があります。すべてのUSBディスクを反復処理する必要があり、事前に正確なパスがわからないため、ワイルドカード(*または?)を使用する必要があります。

for DISK in $(ls /sys/devices/pci0000:00/0000:00:14.0/usb?/*/*:1.0/host?/target?:0:0/?:0:0:0/block) ; do
echo /dev/$DISK
done

上記は、1つのUSBディスクが接続されている場合にのみ機能します。2つ以上のディスクが接続されている場合、sdd/sysパスを取得します。

/dev//sys/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/Host5/target5:0:0/5:0:0:0/block:
/dev/sdd
/dev//sys/devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/Host6/target6:0:0/6:0:0:0/block:
/dev/sde
/dev//sys/devices/pci0000:00/0000:00:14.0/usb4/4-5/4-5:1.0/Host4/target4:0:0/4:0:0:0/block:
/dev/sdc

sddsdesdcのみを反復処理するにはどうすればよいですか?

udevインフラストラクチャを使用しないソリューション、つまり/dev/disk/by-path/を探しています

7
Martin Vegter

lsblkコマンドでそれを行うことができます。

lsblk -l -o name,tran与える

NAME TRAN
sda  sata
sda1 
sdb  usb
sdc  usb
sr0  sata

-lは「リスト」形式を表すので、解析が簡単です。それ以外の場合は、次のようなツリー形式になります。

NAME   TRAN
sda    sata
└─sda1
sdb    usb
sr0    sata

他のフラグを指定すると、FSTYPE、LABEL、UUID、MOUNTPOINTなどの多くの情報が得られます。単にlsblk --helpすべてのオプションを表示します。

--paths --noheadings --scsiフラグは、次のように出力を出力します。

sata   /dev/sda
usb    /dev/sdb
usb    /dev/sdc
sata   /dev/sr0

次に、入力にgrepを入力して、行の先頭にusbがある行を除外します。

8
styrofoam fly

lsusbを実行すると、USBバス経由で接続されているデバイスの名前が表示されます。

のように:

$ lsusb
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 004: ID 0421:0802 Nokia Mobile Phones CA-42 Phone Parent
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

参照 man lsusb

説明

lsusbは、システム内のUSBバスとそれに接続されているデバイスに関する情報を表示するためのユーティリティです。

4
Rui F Ribeiro