Wie erkennt man, ob es sich bei einer Festplatte um eine externe USB- oder interne Festplatte handelt?

Wie erkennt man, ob es sich bei einer Festplatte um eine externe USB- oder interne Festplatte handelt?

Ich möchte feststellen, ob ein Laufwerk extern oder intern ist. Ich habe ein SATA-Laufwerk über einen SATA-USB-Adapter an einen USB-Anschluss angeschlossen.

hdparm -I meldet es wie folgt:

ATA device, with non-removable media
...
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0.

Es erhält diese Daten anscheinend direkt vom Laufwerk. Ist es für hdparm möglich, die tatsächliche Transportschicht zu erkennen, statt der, die das Laufwerk meldet?

Ich habe auch versucht lsusb. Es scheint nicht nützlich zu sein. Es ist für Menschen lesbar, aber es gibt keine Möglichkeit, seine Ausgabe mit anderen Gerätebefehlen zu vergleichen. Das Durchlaufen von Bussen mit lsusb -D /dev/bus/usb/...scheint auch nicht angemessen, obwohl ich vielleicht etwas wiefind /dev/bus | while read -r line; do if((lsusb -D $line | grep) CONTAINS SOME SUBSTRING MENTIONING THE DEVICE) then blah done

parted --listmeldet auch nicht, dass das externe Laufwerk über USB läuft:

Model: ADATA SU 800 (scsi)

Antwort1

Ich kann es so sagen:

$ realpath /sys/block/sd*
/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host6/target6:0:0/6:0:0:0/block/sdc

Anmerkungen:

  • Wenn nicht, gibt Ihnen realpathdas vielleicht einen Hinweis.readlink
  • Abfrage zu einem bestimmten Gerät, einigen davon (wie oben) oder allen ( /sys/block/*).
  • In meinem Kubuntu /sys/class/block/sind auch Einträge für Partitionen enthalten (z. B. sda1).

POSIX-Lösung:

$ for p in /sys/block/sd*; do (cd "$p" && pwd -P); done
/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host6/target6:0:0/6:0:0:0/block/sdc

verwandte Informationen