Дізнайтеся, чи є певний пристрій масовим накопичувачем USB


10

Контекст

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

В даний час синтаксис моєї команди такий: write-image DEVICEде DEVICEзнаходиться блок блоку SD-карти, наприклад. /dev/sdd.

Проблема

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

Питання

Я хотів би переконатися, що вказаний пристрій насправді є деяким USB-накопичувачем (або, принаймні, знімним пристроєм), щоб я міг захистити системні диски від випадкових пошкоджень. Як я можу це зробити?

Я не знайшов нічого релевантного в Інтернеті /procчи в Інтернеті, зараз я зовсім розгублений.

Відповіді:


10

Подивіться під /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/яких також можуть стати в нагоді.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.