4 # this script is idempotent
6 # warning: changes here may affect the close version of this script
9 if ! test "$BASH_VERSION"; then echo "error: shell is not bash" >&2; exit 1; fi
10 shopt -s inherit_errexit
2>/dev
/null ||
: # ignore fail in bash < 4.4
12 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" exit status: $?, PIPESTATUS: ${PIPESTATUS[*]}" >&2' ERR
14 m
() { printf "%s\n" "$*"; "$@"; }
17 fs_file
=/root
/crypt-luks-keys-loopback
18 mapper_name
=crypt-luks-keys-loopback
20 l
=$
(losetup
-j $fs_file |
sed -rn 's/^([^ ]+): .*/\1/p' |
head -n1 ||
:)
22 echo "$0: skipping losetup due to existing loopback: $l"
27 if cryptsetup status
/dev
/mapper
/$mapper_name &>/dev
/null
; then
28 echo "$0: skipping cryptsetup due to existing /dev/mapper/$mapper_name"
30 if ! cryptsetup luksOpen
$l $mapper_name; then
31 echo "$0: error luksOpen failed. detaching loopback" >&2
36 if mountpoint
-q /dev
/mapper
/$mapper_name; then
37 echo "$0: skipping mount /dev/mapper/$mapper_name /mnt2 due to existing mount"
39 m mount
/dev
/mapper
/$mapper_name /mnt2