Scopri se un dispositivo specifico è una memoria di massa USB


10

Contesto

Sto automatizzando l'imaging delle schede SD da ddun'immagine di fabbrica esistente . La scheda SD è sempre collegata tramite un lettore di schede USB esterno e quindi appare nel sistema come un dispositivo di blocco SCSI /dev/sd*.

Attualmente la sintassi del mio comando è: write-image DEVICEdov'è DEVICEil dispositivo di blocco della scheda SD, ad es. /dev/sdd.

Problema

Sto già facendo un controllo di base DEVICEper verificare che sia del modulo /dev/sd*ma questo non è abbastanza: temo che gli utenti (persone di produzione non abituate a Linux) facciano un errore e specifichino un altro dispositivo apparentemente valido, ad es. /dev/sda. Puoi vedere l'incombente catastrofe, soprattutto perché il mio script di imaging ha bisogno dei privilegi di root (non per scrivere l'immagine stessa, intendiamoci, ma per modificare successivamente la scheda SD, inclusa la regolazione delle dimensioni di una partizione in base alle dimensioni reali della scheda SD) ...

Domanda

Vorrei verificare che il dispositivo specificato in realtà sia un po 'di memoria di massa USB (o almeno un dispositivo rimovibile) in modo da poter proteggere i dischi di sistema dall'eliminazione accidentale. Come posso fare ciò?

Non ho trovato nulla di rilevante nel /proco sul web, ora sono abbastanza in perdita.

Risposte:


10

Dai un'occhiata alla /sys/directory. In particolare, /sys/block/contiene collegamenti simbolici per bloccare i dispositivi /sys/devices/.

/sys/block/sdX/removablesembra che leggerà 1 per un dispositivo rimovibile e 0 altrimenti. Questo ti dà un controllo di base per la rimovibilità.

Non sono sicuro se esiste un modo migliore per verificare se si tratta di un dispositivo USB, ma readlink /sys/block/sdesputerà qualcosa del genere ../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. Controllare se contiene una usb*cartella potrebbe funzionare come un semplice controllo.

Puoi ottenere altri dettagli del dispositivo come il fornitore e il modello /sys/block/sdX/device/, che potrebbero anche tornare utili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.