特定のデバイスがUSB大容量ストレージであるかどうかを確認する


10

環境

既存の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ウェブ上やウェブ上で関連性のあるものは何も見つかりませんでした。

回答:


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/sdeusb*フォルダーが含まれているかどうかのチェックは、簡単なチェックとして機能する場合があります。

からベンダーやモデルなどの他のデバイスの詳細を取得できます/sys/block/sdX/device/。これも役立つ場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.