codekasten/spielspass/dmcrypt-wrapper.sh
2005-06-16 22:48:37 +00:00

73 lines
1.4 KiB
Bash
Executable file

#!/bin/sh
#
# a simple wrapper around cryptdisks to:
# mount after cryptsetup
# umount before cryptsetup
# break on error or undefined variables
set -eu
crypt_mount()
{
local partitions=`dmsetup ls | grep -v "No devices found" | cut -f1`
for i in $partitions; do
if mount | grep -q "^/dev/mapper/$i$"; then
#if [ `mount | grep -c /dev/mapper/$i` -lt 1 ]; then
echo -en "\t$i(mounting)"
mount "/dev/mapper/$i" &>/dev/null || echo -en "(failed)" >&2
else echo -en "\t$i(already mounted)"
fi
echo ""
done
}
crypt_umount()
{
local partitions=`dmsetup ls | grep -v "No devices found" | cut -f1`
for i in $partitions; do
if mount | grep -q "^/dev/mapper/$i$"; then
#if [ `mount | grep -c /dev/mapper/$i` -gt 0 ]; then
echo -en "\t$i (unmounting)"
umount "/dev/mapper/$i" &>/dev/null || echo -en "(failed!)" >&2
else echo -en "\t$i(not mounted)"
fi
echo ""
done
}
show_active_mappings()
{
mappings=`dmsetup ls | cut -f1`
if [ "X$mappings" != "X" ]; then
echo "there are still some active mappings:"
echo "$mappings"
fi
}
########### do it! ##############
ACTION=help
[ $# -gt 0 ] && ACTION="$1"
case "$ACTION" in
start|retry )
/etc/init.d/cryptdisks start
crypt_mount
;;
stop )
crypt_umount
/etc/init.d/cryptdisks stop
show_active_mappings
;;
restart|reload|force-reload )
$0 stop
$0 start
;;
* )
echo "Syntax: `basename $0` { start | stop | restart | retry | reload | force-reload | help }"
;;
esac