Узнайте, какое конкретное устройство является запоминающим устройством USB

контекст

Я автоматизирую визуализацию SD-карты с существующего образа фабрики dd . SD-карта всегда подключается через внешний USB-считыватель карт и, таким образом, отображается в системе как блок SCSI-устройства /dev/sd* .

В настоящее время синтаксис моей команды: write-image DEVICE где DEVICE является блочным устройством SD-карты, например. /dev/sdd .

проблема

Я уже делаю базовую проверку на DEVICE чтобы убедиться, что она имеет форму /dev/sd* но этого недостаточно: я боюсь, что пользователи (люди, не использующие Linux) производят ошибку и указывают другое, казалось бы, действительно устройство, например. /dev/sda . Вы можете увидеть надвигающуюся катастрофу, тем более, что для моего сценария визуализации нужны привилегии root (чтобы не писать само изображение, заметьте, а затем измените SD-карту, включая настройку размера раздела в зависимости от реального размера SD-карты) …

Вопрос

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

Я не нашел ничего значимого в /proc или в Интернете, теперь я совершенно потерян.

  • Как переустановить syslinux на переформатированный (fat32 to fat16) раздел
  • Автоматизация разделов USB NTFS на Gnome не работает, если имя устройства - sdb (FAT32 в порядке)
  • Как автоматически монтировать все USB-устройства на одном USB-разъеме с той же точкой монтирования
  • Медленная работа при копировании файлов на USB-устройства и обратно
  • Установите параметры монтирования по умолчанию для usb
  • Как вы отформатируете USB-накопитель после того, как Ubuntu будет «непризнан»?
  • Почему в руководстве по установке Debian предлагается выполнить «синхронизацию» после необработанной копии файла изображения на USB-ключ?
  • Предотвращение вращения внешнего USB-накопителя во время приостановки в ОЗУ
  • One Solution collect form web for “Узнайте, какое конкретное устройство является запоминающим устройством USB”

    Просмотрите каталог /sys/ . В частности, /sys/block/ содержит символические ссылки для блокировки устройств в /sys/devices/ .

    /sys/block/sdX/removable выглядит как 1 для съемного устройства и 0 в противном случае. Это дает вам базовую проверку на возможность удаления.

    Я не уверен, есть ли лучший способ проверить, является ли это USB-устройством, но readlink /sys/block/sde выдаст что-то вроде ../devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1.2/6-1.2:1.0/host7/target7:0:0/7:0:0:0/block/sde . Проверка того, что содержит папку usb* может работать как простая проверка.

    Вы можете получить информацию о других устройствах, таких как поставщик и модель, из /sys/block/sdX/device/ , которые также могут пригодиться.

    Interesting Posts

    После перезагрузки Debian после установки

    Менеджеры пакетов для локальных установок в домашнем каталоге

    Обновите один пакет из целевой версии

    Извлечь подстроку с sed, которая останавливается при первом входе в конец

    Как задержать аргумент командной строки?

    Странное сообщение об ошибке при установке CentOS 6.5 относительно диска, содержащего метаданные BIOS RAID?

    Как отправить все выходные данные на пейджер по умолчанию?

    Ошибка записи при передаче при установке FreeBSD 6.4

    Откройте статический IP-адрес подключенного Ethernet-кабеля

    Скопируйте шаблон соответствия линии рядом с другой соответствующей строкой шаблона, используя sed

    Как направить хост-браузер на гостевую виртуальную машину?

    Каков самый быстрый способ обработки строки за строкой в ​​bash?

    Как работать с ядром, о котором нет информации?

    Принуждение Bash к использованию Perl RegEx Engine

    Терминал: команда termcapinfo не найдена

    Linux и Unix - лучшая ОС в мире.