lsusbの出力を使用してブロックデバイス情報をエクスポートする方法

lsusbの出力を使用してブロックデバイス情報をエクスポートする方法

ユーザーがUSBディスクをバックアップ先として選択できるスクリプトを作成しています。アイデアは、デバイス全体にわたってパーティションを作成することです。lsusbベンダーIDと名前が与えられたら、それをユーザーに提示したいと思います。

明らかに、他のデバイスではなくディスクのみをリストしたいと思います。また、/devユーザーが選択したディスクのデバイス名を知っておくと、そのディスクにパーティションを作成できます。私はそこにあるさまざまなシンボリックリンクを見て、/dev/disk/相互/sys/参照を見つけようとしました。私は利点を活用しlsblkdf目標を達成できませんでした。私は知りたいです:

  • lsusbどのUSBデバイスがディスクであるかを確認するために提供された情報をどのように使用できますか?
  • lsusb提供された情報を使用して/dev特定のデバイスのデバイス名を取得するにはどうすればよいですか?

ベストアンサー1

あなたの質問への答えは、スクリプトをトリガーするためにどのメカニズムが使用されるかによって異なります。

ある種のバックアッププログラムからスクリプトを呼び出すと仮定すると、USBデバイスが接続されたときにプログラムはすぐには呼び出されません。ウデブルール(ルールなど)を使用して、必要なudevadm infoすべての情報を収集できます。

アイデアは次のとおりです。

  • 接続されたUSBドライブには自動的にデバイスノードが割り当てられます。/dev/sdXカーネル別
  • すべてのデバイスノードを繰り返す場合/dev/sd[az](または実際に存在するものは何でも/開発/)各ドライブを呼び出すと、udevadm info --query=all /dev/sdX出力に次のような行があるので、そのドライブのどれがUSBドライブかを知ることができます。
E: ID_BUS=usb
  • 同様に、次のベンダーとモデルを含む出力ラインを見つけることができます。
E: ID_MODEL=Flash_Disk
< ... >
E: ID_VENDOR=Generic

udevadmしたがって、usingなどの結果を解析すると、grep目的に必要なすべての情報を収集できます。

おすすめ記事