查明特定設備是否為 USB 大容量儲存設備
語境
我正在從現有的
dd
工廠映像自動執行 SD 卡映像。SD 卡始終通過外部 USB 讀卡器連接,因此在系統中顯示為 SCSI 塊設備/dev/sd*
。目前我的命令的語法是:SD卡塊設備
write-image DEVICE
在哪裡,例如。.DEVICE``/dev/sdd
問題
我已經在做一個基本的檢查
DEVICE
以驗證它的形式/dev/sd*
,但這還不夠:我擔心使用者(不習慣 Linux 的生產人員)會犯錯誤並指定另一個看似有效的設備,例如。/dev/sda
. 您可以看到迫在眉睫的災難,尤其是因為我的映像腳本需要root權限(請注意,不是自己編寫映像,而是事後修改SD卡,包括根據SD卡的實際大小調整分區的大小)…問題
我想驗證指定的設備實際上是一些 USB 大容量儲存(或至少是一個可移動設備),以便我可以保護系統磁碟不被意外丟棄。我怎樣才能做到這一點?
我在網上或網上找不到任何相關的東西
/proc
,我現在很茫然。
看看
/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/
,這也可能會派上用場。