Узнайте, какое конкретное устройство является запоминающим устройством 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 или в Интернете, теперь я совершенно потерян.

  • Grub2, загрузитесь в существующую опцию ОС?
  • USB-накопитель доступен только для чтения в GNOME / nautilus?
  • загрузочный live usb не загружается, KNOPPIX
  • Проблемы с копированием больших файлов на USB-накопитель
  • Установка opensuse через USB
  • Сделайте загрузочный USB из ISO
  • Предотвратите использование USB-накопителя при использовании другого устройства при сбросе
  • Как полностью перестроить загрузочный раздел с помощью grub?
  • 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

    Как получить «\» вместо «» после замены sed?

    Процесс по-прежнему работает после спящего режима?

    Почему fdisk настаивает на запуске первого раздела в секторе 65535 (MiB 31.9995 …)

    Как заблокировать экран для сеанса терминала?

    Защищая от злой горничной, как справиться с удалением раздела / boot

    grep несколько строк, подсчет строк, эхо-выход для каждой строки

    Ошибка: QOpenGLShader: не удалось создать шейдер – при запуске через ssh

    Сокращение тайм-аута выключения для «остановки работы»

    Включение proxy_arp для интерфейса eth2.1

    mod_evasive: белый список, из-за отсутствия журналов доступа?

    Как извлечь только буквенно-цифровые символы из заданного текстового файла и распечатать их?

    Выбор / Вставка Word-Wrap на терминалах X-Based

    su: Разрешение отклонено, несмотря на правильный пароль

    Как создать выход в скрипт python, запущенный при загрузке?

    Где MacOS Finder хранит эту информацию (происхождение файла, который был отправлен мне)?

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