# cr_mount # Note: You'll be asked for passphrase. # # cr_umount function cr_mount() { local CRYPTOFS_LOOPDEV_NAME local CRYPTOFS_MAP_NAME if [ $# -gt 1 ]; then CRYPTOFS_MAP_NAME=cryptofs$( date +%s%N ) CRYPTOFS_LOOPDEV_NAME=$( losetup -j $( realpath "${1}" ) | cut -d : -f 1; ) if [ -z "$CRYPTOFS_LOOPDEV_NAME" ]; then CRYPTOFS_MAP_LOOP=$( losetup -f --show $( realpath "${1}" ) ) || return 1; else echo REMOVING UNNEEDED LOOP DEVICES losetup -d "${CRYPTOFS_LOOPDEV_NAME}" fi cryptsetup create "${CRYPTOFS_MAP_NAME}" "${CRYPTOFS_MAP_LOOP}" && \ mount "/dev/mapper/${CRYPTOFS_MAP_NAME}" "${2}" && { echo Mounted "${1}" properly. Use cr_umount to unmount.; } || \ { echo Mount failed. Bad password?; \ cryptsetup remove "${CRYPTOFS_MAP_NAME}" "${CRYPTOFS_MAP_LOOP}" ; \ losetup -d "${CRYPTOFS_MAP_LOOP}"; } else echo "${FUNCNAME} " fi } function cr_umount() { local CRYPTOFS_LOOPDEV_NAME local CRYPTOFS_MAP_NAME if [ $# -gt 0 ]; then CRYPTOFS_MAP_NAME=$( basename $( df "${1}" --output=source | ( read; read -r devn ; echo "${devn}" ) ) ) || return 1; CRYPTOFS_LOOPDEV_NAME=$( cryptsetup status "${CRYPTOFS_MAP_NAME}" | sed -n 's/\(.*device: \)\(.*\).*$/\2/p' ) || return 1; mount | fgrep mapper &> /dev/null && { umount "${1}" || return 1; } || echo Not mounted. if [ -n "${CRYPTOFS_MAP_NAME}" -a -n "${CRYPTOFS_LOOPDEV_NAME}" ]; then cryptsetup remove "${CRYPTOFS_MAP_NAME}" losetup -d "${CRYPTOFS_LOOPDEV_NAME}" fi else echo "${FUNCNAME} " fi }