Расположение монтирования с помощью VidPid устройства

1

Я пытаюсь найти способ узнать, где установлено устройство хранения данных (pendrive, hdd), зная только его идентификаторы поставщика и продукта. Есть ли команда (или комбинация многих команд), которая позволила бы мне получить место установки для данного устройства?

Я не слишком разбираюсь в Linux, попробовав dmesg, mount, lsusb (-t) а также df команды даже не дают мне малейшего понятия о том, как этого добиться ...

Asunez
источник

Ответы:

1

Если это будет частью программы, используемой широкой публикой, имейте в виду, что:

  1. Может быть несколько устройств с одинаковой парой VID: PID;
  2. Один диск (даже флешка) может иметь несколько разделов;
  3. В Linux один и тот же раздел (файловая система) можно монтировать сразу в нескольких местах

Это говорит:

Сначала используйте udev для вывода списка всех блочных устройств, чей родитель имеет необходимый VID: PID, либо на основе свойств ID_ *, либо фактических sysfs. idVendor, idModel атрибуты:

$ udevadm trigger -v -n -s block -p ID_VENDOR_ID=3538 -p ID_MODEL_ID=0051
/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/host6/target6:0:0/6:0:0:0/block/sdb
/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.3/2-1.3:1.0/host6/target6:0:0/6:0:0:0/block/sdb/sdb1

я считать довольно безопасно предположить, что последняя часть имени всегда будет соответствовать /dev название...

использование findmnt перечислить точки монтирования:

$ findmnt -n -o TARGET /dev/sdb1
/run/media/grawity/A0D8-7268

В комбинации:

devs=$(udevadm trigger -v -n -s block -p ID_VENDOR_ID=… -p ID_MODEL_ID=…)

for dev in $devs; do
    findmnt -n -o TARGET /dev/${dev##*/}
done

# alternative, based on the device's major:minor
for dev in $devs; do
    findmnt -n -o TARGET $(<"$dev/dev")
done
grawity
источник
Спасибо! Работает как шарм. Кроме того, спасибо за предупреждения, но это только для моего использования - и я буду помнить предостережения к этому решению.
Asunez
Только один вопрос - это также должно работать с устройствами, подключенными через Hub? udevadm Кажется, я не могу найти устройство, используя его vidpid, когда оно подключено через концентратор, но, возможно, мне не хватает параметра или чего-то еще.
Asunez
Неважно, в моей команде была опечатка - она ​​работает и с хабберами.
Asunez