@ -1,5 +1,17 @@
#!/bin/bash
already_open() {
local dev=$1
local cryptdev=$2
if /sbin/cryptsetup status $cryptdev | grep -q "is active"
then
if /sbin/cryptsetup status $cryptdev | grep -qP "device:\s+$dev"
then
return 0
fi
fi
return 1
}
for mountdata in /dev/shm/access/{0..9} /dev/shm/access{10..99}
do
@ -25,11 +37,14 @@ do
then
headerpart="--header $mountdata/header"
fi
/sbin/cryptsetup $headerpart -d $mountdata/key luksOpen $dev $cryptdev
res=$?
if [[ $res -ne 0 ]]
if ! already_open $dev $cryptdev
then
exit $res
/sbin/cryptsetup $headerpart -d $mountdata/key luksOpen $dev $cryptdev
res=$?
if [[ $res -ne 0 ]]
then
exit $res
fi
fi
echo "/sbin/cryptsetup luksClose $cryptdev"
@ -41,5 +56,6 @@ do
fi
echo "/bin/umount $mountpoint"
done | tac >/dev/shm/access/stop
res=${PIPESTATUS[0]}
chmod 700 /dev/shm/access/stop
exit ${PIPESTATUS[0]}
exit $res