Dada uma partição de bloco, procure o dispositivo LUKS aberto

1

Dada uma partição de bloco (como /dev/sdf3 ), eu gostaria de procurar um dispositivo LUKS aberto nessa partição. Por exemplo:

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

Ou, se nenhum dispositivo LUKS estiver aberto nessa partição, ele não retornará nada, ou talvez um valor de retorno de erro.

Qual comando poderia ser usado para alcançar o acima?

    
por Craig McQueen 26.10.2017 / 05:34

2 respostas

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 }'
    
por 28.10.2017 / 17:50
0

Poderia lsblk fazer o trabalho? Por exemplo:

$ lsblk /dev/sda2
NAME         MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda2           8:2    0 96.9G  0 part  
└─sda2_crypt 253:0    0 96.9G  0 crypt /home
    
por 27.10.2017 / 13:29