3

Возможный дубликат:
Найти внешние и внутренние устройства, подключенные к системе в Linux

Как через терминал узнать, какие устройства внешние, а какие внутренние.

Под внешним я имею в виду устройства, подключенные к USB-порту. Например, USB-накопитель, портативный USB-жесткий диск и т.д.

Под внутренним я имею в виду устройства, подключенные внутри. Например, жесткий диск SATA и т.д.

Спасибо

4 ответа4

4

Вы можете использовать lsusb для вывода списка устройств USB, lspci для вывода списка устройств PCI и lspcmcia для вывода списка устройств PCMCIA.

Если вы заботитесь только о дисковых устройствах, вы можете посмотреть в /dev/disk/by-id . Имя ссылки устройства начинается с типа подключения (usb, ata, scsi-sata и т.д.)

2

Обычно это невозможно - многие машины имеют внутренние USB-устройства (такие вещи, как интерфейсы Bluetooth и устройства считывания отпечатков пальцев, часто реализуются таким образом), и возможно иметь внешние SATA-устройства (ноутбук, который я сейчас использую, имеет eSATA порт). Устройства SCSI также могут быть внутренними или внешними.

0

Блочные устройства имеют "съемный" атрибут. Хотя это не совсем соответствует внутреннему / внешнему (например, внутренний CDROM является "съемным" и дисковод eSATA может быть неправильно классифицирован), он может быть достаточно близок для ваших целей.

$ cd /sys/block/
$ grep ^ */removable
dm-0/removable:0
dm-1/removable:0
dm-2/removable:0
dm-3/removable:0
dm-4/removable:0
dm-5/removable:0
dm-6/removable:0
dm-7/removable:0
dm-8/removable:0
fd0/removable:1
hdc/removable:1
loop0/removable:0
loop1/removable:0
loop2/removable:0
loop3/removable:0
loop4/removable:0
loop5/removable:0
loop6/removable:0
loop7/removable:0
md0/removable:0
md1/removable:0
sda/removable:0
sdb/removable:0
sdc/removable:0
sdd/removable:0
sde/removable:1
sdf/removable:1
sdg/removable:1
sdh/removable:1
sdi/removable:1
0

Вот небольшой пример сценария с использованием HAL , если он у вас есть.

store=$(hal-find-by-capability --capability "storage")
for s in $store
do
  r=$(hal-get-property --udi ${s} --key storage.removable)
  if [ $r = "true" ]; then
    hal-get-property --udi ${s} --key info.product
    prod=$(hal-get-property --udi ${s} --key info.product)
    type=$(hal-get-property --udi ${s} --key storage.drive_type)
    device=$(hal-get-property --udi ${s} --key block.device)
    mdir=$(awk -vdev="$device" '$0~dev{print $2}' /etc/mtab)
    echo Product: ${prod}
    echo Type: ${type}
    echo Mounted on: ${mdir}
  fi
done

vol=$(hal-find-by-capability --capability "volume")
for v in $vol
do
   mountpt=$(hal-get-property --udi ${v} --key volume.mount_point)
   blk=$( hal-get-property --udi ${v} --key block.device )
   echo "mount point: $mountpt"
   echo "device: $blk"
done

Используйте команду hal-device чтобы показать устройства HAL.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .