Как составить список ВСЕХ подключенных жестких дисков в удобной для скриптов форме?

Как составить список ВСЕХ подключенных жестких дисков в удобной для скриптов форме?

Как составить список ВСЕХ подключенных HDD-устройств в удобном для скриптов виде? Все - означает как смонтированные, так и не смонтированные. Удобный для скриптов - означает то, что я могу использовать для (u)монтирования в моем скрипте оболочки с минимальным использованием grep или sed.

Моя задача - написать скрипт, который при запуске определит, где находится HDD (если он вообще подключен) и смонтирует его. В моем скрипте мне нужен способ получить список доступных устройств в /dev. Какой инструмент мне использовать в моем скрипте?

Вот варианты, которые я рассматривал:

  • fdisk -l дает гораздо больше информации, чем мне нужно - немного сложно анализировать ее вывод в оболочке
  • parted -l не выводит список не смонтированных разделов, а также выводит много дополнительной информации
  • cat /proc/partitions лучший вывод, но не перечисляет несмонтированные разделы

Какой инструмент лучше всего подойдет для моей задачи?

Чтобы немного прояснить, откуда я исходил, вот моя ситуация:

На некоторых ПК пользователь подключает жесткий диск через USB или SATA. Затем пользователь перезагружает ПК. Я ничего не знаю об устройстве жесткого диска, могу только предположить, что у него есть один раздел с файловой системой ext4. Устройство может отображаться как /dev/sda или /dev/sdb. У меня есть доступ su к устройству, и я могу добавить свой скрипт в /etc/rc.local или куда-либо еще, но у меня есть этот доступ только до передачи ПК пользователю.

решение1

Возможно, blkidчто дает строки вида:

/dev/sdXX: UUID="<UUID>" TYPE="<fstype>"

Также вы можете использовать эти UUID в fstab: UUID="<UUID>"можно заменить путь к устройству /dev/sdXX.

решение2

В дистрибутивах, в которых есть udisks

 udisks --enumerate-device-files | grep -v ^/dev/disk

Связанный контент