| 1 | #!/bin/sh
|
| 2 | # $ mounter
|
| 3 | # you will then be guided through
|
| 4 | # works best with USB drives, not tested with other devices
|
| 5 |
|
| 6 | set -e
|
| 7 |
|
| 8 | sudo -v || exit 1
|
| 9 |
|
| 10 | i=1
|
| 11 | devices=""
|
| 12 | echo "devices found"
|
| 13 |
|
| 14 | while read -r dev; do
|
| 15 | if sudo cryptsetup isLuks "/dev/$dev" 2>/dev/null; then
|
| 16 | echo "[$i] /dev/$dev"
|
| 17 | devices="$devices /dev/$dev"
|
| 18 | i=$((i + 1))
|
| 19 | fi
|
| 20 | done << EOF
|
| 21 | $(lsblk -do NAME)
|
| 22 | EOF
|
| 23 |
|
| 24 | [ "$i" -eq 1 ] && exit 1
|
| 25 |
|
| 26 | set -- $devices
|
| 27 |
|
| 28 | if [ "$i" -eq 2 ]; then
|
| 29 | chosen_index=1
|
| 30 | else
|
| 31 | printf "select a device to unlock [1-%d]: " $((i - 1))
|
| 32 | read chosen_index
|
| 33 | fi
|
| 34 |
|
| 35 | n=1
|
| 36 | for dev in "$@"; do
|
| 37 | if [ "$n" -eq "$chosen_index" ]; then
|
| 38 | chosen="$dev"
|
| 39 | break
|
| 40 | fi
|
| 41 | n=$((n + 1))
|
| 42 | done
|
| 43 |
|
| 44 | [ -z "$chosen" ] && exit 1
|
| 45 |
|
| 46 | default_name="usb$chosen_index"
|
| 47 | printf "name to assign to unlocked device [%s]: " "$default_name"
|
| 48 | read name
|
| 49 | [ -z "$name" ] && name="$default_name"
|
| 50 |
|
| 51 | echo "cryptsetup opening $chosen as $name"
|
| 52 | sudo cryptsetup open "$chosen" "$name" || exit 1
|
| 53 |
|
| 54 | mount_point="/mnt/$name"
|
| 55 | sudo mkdir -p "$mount_point"
|
| 56 | echo "mounting $name"
|
| 57 | sudo mount "/dev/mapper/$name" "$mount_point" || exit 1
|
| 58 |
|
| 59 | echo "$chosen mounted successfully at $mount_point"
|