#!/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 echo -e "\t$i (mounting)" mount "/dev/mapper/$i" &>/dev/null || echo -e " (\"mount /dev/mapper/$i\" failed)" >&2 fi 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 true else echo -e "\t$i (unmounting)" umount "/dev/mapper/$i" &>/dev/null || echo -e " (\"umount /dev/mapper/$i\" failed)" >&2 fi done } ########### 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 ;; restart|reload|force-reload ) $0 stop $0 start ;; * ) echo "Syntax: `basename $0` { start | stop | restart | retry | reload | force-reload | help }" ;; esac