unmounter (895B)
1 #!/bin/sh 2 3 set -e 4 5 sudo -v || exit 1 6 7 mapped_devices="" 8 for path in /dev/mapper/usb*; do 9 [ -e "$path" ] || continue 10 mapped_devices="$mapped_devices $(basename "$path")" 11 done 12 13 set -- $mapped_devices 14 15 [ "$#" -eq 0 ] && exit 1 16 17 echo "Devices Found" 18 i=1 19 for dev in "$@"; do 20 echo "[$i] /dev/mapper/$dev" 21 i=$((i + 1)) 22 done 23 24 if [ $i -eq 2 ]; then 25 index=1 26 else 27 printf "select a device to unmount [1-%d]: " $(( $# )) 28 read index 29 30 case "$index" in 31 ''|*[!1-9]*) 32 exit 1 33 ;; 34 esac 35 36 if [ "$index" -lt 1 ] || [ "$index" -ge "$#" ]; then 37 exit 1 38 fi 39 fi 40 41 i=1 42 for dev in "$@"; do 43 [ "$i" -eq "$index" ] && name="$dev" && break 44 i=$((i + 1)) 45 done 46 47 mount_point="/mnt/$name" 48 49 if mountpoint -q "$mount_point" 2>/dev/null; then 50 echo "umounting $mount_point" 51 sudo umount "$mount_point" 52 fi 53 54 echo "cryptsetup closing $name" 55 sudo cryptsetup close "$name" 56 57 echo "/dev/mapper/$name unmounted successfully"