接続されているすべての HDD デバイスをスクリプトに適した方法で一覧表示するにはどうすればよいでしょうか?

接続されているすべての HDD デバイスをスクリプトに適した方法で一覧表示するにはどうすればよいでしょうか?

接続されているすべての HDD デバイスをスクリプトフレンドリーな方法でリストするにはどうすればよいでしょうか。すべてとは、マウントされているものとマウントされていないものの両方を意味します。スクリプトフレンドリーとは、最小限の grep または sed でシェル スクリプトで (u)mount に使用できるものを意味します。

私の仕事は、起動時に HDD がどこにあるか (接続されているかどうか) を判断してマウントするスクリプトを作成することです。スクリプトでは、/dev の下にある使用可能なデバイスのリストを取得する方法が必要です。スクリプトではどのツールを使用すればよいでしょうか?

私が検討した選択肢は次のとおりです。

  • fdisk -l 必要以上の情報を提供します。シェルで出力を解析するのは少し難しいです。
  • parted -l マウントされていないパーティションはリストされず、多くの追加情報も出力されます。
  • cat /proc/partitions 最良の出力だが、マウントされていないパーティションはリストされない

私のタスクに最適なツールは何ですか?

私の立場を少し明確にするために、私の状況を説明します。

一部の PC では、ユーザーは USB または SATA 経由で HDD を接続します。その後、ユーザーは PC を再起動します。HDD デバイスについては何も知りませんが、ext4 ファイル システムのパーティションが 1 つあるとしか考えられません。デバイスは /dev/sda または /dev/sdb として表示されます。デバイスへの su アクセスがあり、/etc/rc.local または他の場所にスクリプトを追加できますが、このアクセス権があるのは PC をユーザーに渡す前だけです。

答え1

おそらく、blkid次のような形式の行が出力されます。

/dev/sdXX: UUID="<UUID>" TYPE="<fstype>"

また、これらの UUID をfstab:で使用してUUID="<UUID>"、デバイス パスを置き換えることもできます/dev/sdXX

答え2

udiskのあるディストリビューションの場合

 udisks --enumerate-device-files | grep -v ^/dev/disk

関連情報