ブロックパーティションが与えられたら、開いているLUKSデバイスを見つけます。

ブロックパーティションが与えられたら、開いているLUKSデバイスを見つけます。

ブロックパーティション(たとえば/dev/sdf3)が与えられたら、そのパーティションで開いているLUKSデバイスを探したいと思います。たとえば、

$ some_command /dev/sdf3
/dev/mapper/luks-01234567-89ab-cdef-0123-456789abcdef

あるいは、パーティションに開いているLUKSデバイスがない場合は、何も返さないか、エラー戻り値を返すことができます。

上記を達成するためにどのようなコマンドを使用できますか?

ベストアンサー1

#!/bin/bash

dev_name="$1"

test -z "$dev_name" && exit 2
test -b "/dev/${dev_name}" || exit 2
test -d "/sys/block/${dev_name}" || exit 2

majmin=$(<"/sys/block/${dev_name}/dev")
cryptsetup isLuks "/dev/${dev_name}" ||
    exit 1 # not correct with external LUKS header
dmsetup table |
    awk -v dev="$majmin" '$4 == "crypt" && $8 == dev { name=$1;sub(":$","",name); print name }'

おすすめ記事