82 lines
2.0 KiB
Bash
82 lines
2.0 KiB
Bash
#!/bin/bash
|
|
|
|
# Veracrypt Cryptsetup script.
|
|
#
|
|
# Mount Veracrypt drive using cryptsetup
|
|
# Currently, only working as promting script, CLI style is not Yet supported.
|
|
|
|
mount(){
|
|
${SUDOERS} cryptsetup --type tcrypt --veracrypt open /dev/$drive $container_name
|
|
|
|
if [ -e "/dev/mapper/$container_name" ]; then
|
|
${SUDOERS} mkdir -p "/mnt/$container_name"
|
|
printf "Directory /mnt/%s created.\n" $container_name
|
|
else
|
|
printf "Device /dev/mapper/%s does not exist.\n" $container_name
|
|
exit 1
|
|
fi
|
|
|
|
|
|
${SUDOERS} mount ${MOUNT_PARAMETERS[@]} /dev/mapper/$container_name /mnt/$container_name
|
|
}
|
|
|
|
unmount(){
|
|
${SUDOERS} umount /mnt/$container_name
|
|
|
|
if [ -e "/dev/mapper/$container_name" ]; then
|
|
DIRECTORY_CLEANUP=true
|
|
else
|
|
printf "Device /dev/mapper/%s does not exist.\n" $container_name
|
|
exit 1
|
|
fi
|
|
|
|
${SUDOERS} cryptsetup close /dev/mapper/$container_name
|
|
|
|
if [[ "$DIRECTORY_CLEANUP" == true ]]; then
|
|
${SUDOERS} rmdir /mnt/$container_name
|
|
fi
|
|
}
|
|
|
|
prompting() {
|
|
MODE=$1
|
|
printf "Available Disks:\n%s\n\nChoose: " "$DISKS"
|
|
read drive
|
|
|
|
printf "\nSelect Container Name: "
|
|
read container_name
|
|
|
|
case $MODE in
|
|
"mount") mount_permission_prompt && mount;;
|
|
"unmount") unmount;;
|
|
esac
|
|
}
|
|
|
|
mount_permission_prompt() {
|
|
printf "Currently the Mount Parameters is hardcoded, so you have not much choice!\n"
|
|
printf "Mounting with '-o umask=000' (Y/n)? "
|
|
read mount_permission
|
|
case $mount_permission in
|
|
"Y"|"y") MOUNT_PARAMETERS+="-o umask=000" ;;
|
|
"N"|"n") ;;
|
|
*) mount_permission_prompt ;;
|
|
esac
|
|
}
|
|
|
|
if sudo --validate; then
|
|
SUDOERS=sudo
|
|
else
|
|
SUDOERS=""
|
|
fi
|
|
|
|
DISKS=$(lsblk -n -o NAME,SIZE,TYPE)
|
|
MOUNT_PARAMETERS=()
|
|
|
|
printf "NOTICE! This script is intended to work with Veracrypt drives in linux only!\n"
|
|
printf "Mode: mount/unmount -> "
|
|
read MODE
|
|
|
|
MODE="${MODE,,}"
|
|
case $MODE in
|
|
"mount") prompting "mount";;
|
|
"unmount"|"umount") prompting "unmount";;
|
|
esac |