Finden Sie heraus, ob es sich bei einem bestimmten Gerät um einen USB-Massenspeicher handelt

10

Kontext

Ich automatisiere das SD-Karten-Imaging von einem vorhandenen ddFactory-Image. Die SD-Karte wird immer über einen externen USB-Kartenleser angeschlossen und erscheint somit im System als SCSI-Blockgerät /dev/sd*.

Derzeit lautet die Syntax meines Befehls: write-image DEVICEWo DEVICEbefindet sich das SD-Kartenblockgerät, z. /dev/sdd.

Problem

Ich überprüfe bereits grundlegend DEVICE, ob es sich um ein Formular handelt, /dev/sd*aber dies reicht nicht aus: Ich befürchte, dass die Benutzer (Produktionsmitarbeiter, die nicht an Linux gewöhnt sind) einen Fehler machen und ein anderes scheinbar gültiges Gerät angeben, z. /dev/sda. Sie können die drohende Katastrophe sehen, zumal mein Imaging-Skript Root-Rechte benötigt (wohlgemerkt nicht, um das Image selbst zu schreiben, sondern um die SD-Karte anschließend zu ändern, einschließlich der Anpassung der Größe einer Partition in Abhängigkeit von der tatsächlichen Größe der SD-Karte) ...

Frage

Ich möchte überprüfen, ob es sich bei dem angegebenen Gerät tatsächlich um einen USB-Massenspeicher (oder zumindest um ein Wechselmedium) handelt, damit ich die Systemfestplatten vor versehentlichem Papierkorb schützen kann. Wie kann ich das machen?

Ich habe im /procoder im Web nichts Relevantes gefunden , jetzt bin ich ziemlich ratlos.

Syam
quelle

Antworten:

10

Schauen Sie sich das /sys/Verzeichnis an. /sys/block/Enthält insbesondere Symlinks zum Blockieren von Geräten in /sys/devices/.

/sys/block/sdX/removableEs sieht so aus, als würde es für ein Wechseldatenträger als 1 und ansonsten als 0 angezeigt. Dies gibt Ihnen eine grundlegende Überprüfung auf Entfernbarkeit.

Ich bin mir nicht sicher, ob es einen besseren Weg gibt, um zu überprüfen, ob es sich um ein USB-Gerät handelt, aber readlink /sys/block/sdeich werde so etwas ausspucken ../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. Das Überprüfen, ob dieser einen usb*Ordner enthält, kann als einfache Überprüfung funktionieren.

Sie können andere Gerätedetails wie Hersteller und Modell von erhalten /sys/block/sdX/device/, was ebenfalls nützlich sein kann.

David Baggerman
quelle