Cari tahu apakah perangkat tertentu adalah penyimpanan massal USB

10

Konteks

Saya mengotomatiskan pencitraan kartu SD dari ddgambar pabrik yang ada . Kartu SD selalu terhubung melalui pembaca kartu USB eksternal dan dengan demikian muncul dalam sistem sebagai perangkat blok SCSI /dev/sd*.

Saat ini sintaks dari perintah saya adalah: di write-image DEVICEmana DEVICEperangkat blok kartu SD, misalnya. /dev/sdd.

Masalah

Saya sudah melakukan pemeriksaan dasar DEVICEuntuk memverifikasi apakah itu dalam bentuk /dev/sd*tetapi ini tidak cukup: Saya khawatir para pengguna (orang-orang produksi yang tidak terbiasa dengan Linux) membuat kesalahan dan menentukan perangkat lain yang tampaknya valid, misalnya. /dev/sda. Anda dapat melihat bencana yang membayangi, terutama karena skrip pencitraan saya memerlukan hak akses root (bukan untuk menulis gambar itu sendiri, ingatlah, tetapi untuk memodifikasi kartu SD sesudahnya, termasuk menyesuaikan ukuran partisi tergantung pada ukuran nyata kartu SD) ...

Pertanyaan

Saya ingin memverifikasi bahwa perangkat yang ditentukan sebenarnya adalah beberapa penyimpanan massal USB (atau paling tidak perangkat yang dapat dilepas) sehingga saya dapat melindungi disk sistem dari sampah secara tidak sengaja. Bagaimana saya bisa melakukan itu?

Saya menemukan tidak ada yang relevan di /procatau di web, saya cukup bingung sekarang.

syam
sumber

Jawaban:

10

Lihat di bawah /sys/direktori. Secara khusus, /sys/block/berisi symlink untuk memblokir perangkat di /sys/devices/.

/sys/block/sdX/removablesepertinya itu akan dibaca sebagai 1 untuk perangkat yang dapat dilepas, dan 0 sebaliknya. Ini memberi Anda pemeriksaan dasar untuk penghapusan.

Saya tidak yakin apakah ada cara yang lebih baik untuk memeriksa apakah itu perangkat USB, tetapi readlink /sys/block/sdeakan memuntahkan sesuatu seperti ../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. Memeriksa apakah itu berisi usb*folder mungkin berfungsi sebagai pemeriksaan sederhana.

Anda bisa mendapatkan detail perangkat lain seperti dari vendor dan model /sys/block/sdX/device/, yang mungkin juga berguna.

David Baggerman
sumber