このトピックに関するご意見をいただきありがとうございます。 macOSへの出力があります(ハイシエラ(High Sierra)ファイルシステム:APFS)注文する - diskutil apfs list
。サンプル出力は次のとおりです。
+-- Container disk5 1B5FE22B-6F4F-4EB9-8AA3-D326E4E940DF
| ====================================================
| APFS Container Reference: disk5
| Size (Capacity Ceiling): 250140434432 B (250.1 GB)
| Minimum Size: 192333017088 B (192.3 GB)
| Capacity In Use By Volumes: 186220453888 B (186.2 GB) (74.4% used)
| Capacity Not Allocated: 63919980544 B (63.9 GB) (25.6% free)
| |
| +-< Physical Store disk4s2 E6FF882B-995C-4C60-B164-76923667F8A1
| | -----------------------------------------------------------
| | APFS Physical Store Disk: disk4s2
| | Size: 250140434432 B (250.1 GB)
| |
| +-> Volume disk5s1 7BB363F8-A658-4B6C-A4B4-778AC782785E
| | ---------------------------------------------------
| | APFS Volume Disk (Role): disk5s1 (No specific role)
| | Name: Macintosh HD (Case-insensitive)
| | Mount Point: Not Mounted
| | Capacity Consumed: 181760897024 B (181.8 GB)
| | FileVault: Yes (Locked)
| |
| +-> Volume disk5s2 48A79DA5-1228-4F5A-8851-5178B91D2310
| | ---------------------------------------------------
| | APFS Volume Disk (Role): disk5s2 (Preboot)
| | Name: Preboot (Case-insensitive)
| | Mount Point: Not Mounted
| | Capacity Consumed: 66613248 B (66.6 MB)
| | FileVault: No
| |
| +-> Volume disk5s3 D46C3FA0-5B9D-4E13-9327-EEFB483F692E
| | ---------------------------------------------------
| | APFS Volume Disk (Role): disk5s3 (Recovery)
| | Name: Recovery (Case-insensitive)
| | Mount Point: Not Mounted
| | Capacity Consumed: 1033371648 B (1.0 GB)
| | FileVault: No
| |
| +-> Volume disk5s4 3E852266-E0C3-48AB-ACAD-D73CEE0134F1
| ---------------------------------------------------
| APFS Volume Disk (Role): disk5s4 (VM)
| Name: VM (Case-insensitive)
| Mount Point: Not Mounted
| Capacity Consumed: 3221250048 B (3.2 GB)
| FileVault: No
私の目標は次のとおりです
- ディスクコンテナのGUIDおよびfileVaultステータス「はい(ロック)」を出力します。
- fileVaultステータス「はい(ロック)」のGUIDを変数に保存します。
私は次のことを思い出しました。
diskutil apfs list|awk '/[A-Z0-9]{8}-([A-Z0-9]{4}-){3}[A-Z0-9]{12}$|.l/{print}'
出力:
+-- Container disk5 1B5FE22B-6F4F-4EB9-8AA3-D326E4E940DF
| Size (Capacity Ceiling): 250140434432 B (250.1 GB)
| Capacity In Use By Volumes: 186220453888 B (186.2 GB) (74.4% used)
| Capacity Not Allocated: 63919980544 B (63.9 GB) (25.6% free)
| +-< Physical Store disk4s2 E6FF882B-995C-4C60-B164-76923667F8A1
| | APFS Physical Store Disk: disk4s2
| +-> Volume disk5s1 7BB363F8-A658-4B6C-A4B4-778AC782785E
| | APFS Volume Disk (Role): disk5s1 (No specific role)
| | FileVault: Yes (Locked)
| +-> Volume disk5s2 48A79DA5-1228-4F5A-8851-5178B91D2310
| | APFS Volume Disk (Role): disk5s2 (Preboot)
| | FileVault: No
| +-> Volume disk5s3 D46C3FA0-5B9D-4E13-9327-EEFB483F692E
| | APFS Volume Disk (Role): disk5s3 (Recovery)
| | FileVault: No
| +-> Volume disk5s4 3E852266-E0C3-48AB-ACAD-D73CEE0134F1
| APFS Volume Disk (Role): disk5s4 (VM)
| FileVault: No
コードを修正/修正するためのすべての入力を歓迎します:)事前にありがとう
答え1
一緒に行くマーク・プロニックのアドバイス構造化XML出力変換
diskutil apfs list -plist
JSONに変換し、jq
このjq
ユーティリティはmacOSのHomebrewで利用できます。
plutil
通常のファイルを読み取る必要があるため、これは2つのステップで行う必要があります。
diskutil apfs list -plist >list.xml
plutil -convert json -o list.json list.xml
生成されたJSONファイルで、次を使用してFileVaultを有効にしてロックされているすべてのボリュームのAPFSボリュームUUIDを抽出できます。
jq -r '.Containers[].Volumes[] | select(.FileVault == true and .Locked == true) | .APFSVolumeUUID' list.json
「単一」コマンドで変数に割り当てます。
locked_uuids=$(
diskutil apfs list -plist >list.xml
plutil -convert json -o list.json list.xml
jq -r '.Containers[].Volumes[] | select(.FileVault == true and .Locked == true) | .APFSVolumeUUID' list.json
rm -f list.xml list.json
)
上記のコマンドは、現在のディレクトリの両方のlist.xml
ファイルを上書きして削除することに注意してください。次のコマンドを使用して一時ファイルを生成list.json
できます。mktemp
locked_uuids=$(
tmpxml=$(mktemp)
tmpjson=$(mktemp)
diskutil apfs list -plist >"$tmpxml"
plutil -convert json -o "$tmpjson" "$tmpxml"
jq -r '.Containers[].Volumes[] | select(.FileVault == true and .Locked == true) | .APFSVolumeUUID' "$tmpjson"
rm -f "$tmpxml" "$tmpjson"
)
また、便宜上、これらのコマンドをシェル関数に入れて呼び出すこともできます(bash
ここで使用されています)。
list_locked_vaults () {
local tmpxml=$(mktemp)
local tmpjson=$(mktemp)
diskutil apfs list -plist >"$tmpxml"
plutil -convert json -o "$tmpjson" "$tmpxml"
jq -r '.Containers[].Volumes[] | select(.FileVault == true and .Locked == true) | .APFSVolumeUUID' "$tmpjson"
rm -f "$tmpxml" "$tmpjson"
}
locked_uuids=$( list_locked_vaults )