diff options
Diffstat (limited to '.local/bin/create-cryptusb')
-rwxr-xr-x | .local/bin/create-cryptusb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/.local/bin/create-cryptusb b/.local/bin/create-cryptusb new file mode 100755 index 0000000..77d232e --- /dev/null +++ b/.local/bin/create-cryptusb | |||
@@ -0,0 +1,32 @@ | |||
1 | #!/bin/sh | ||
2 | # Prompts for and creates a LUKS encrypted partition on a device | ||
3 | |||
4 | # Get disks connected to the system that are hotpluggable (USBs) | ||
5 | devices="$(lsblk -lp -o NAME,SIZE,HOTPLUG,TYPE | grep "1 disk" | awk '{print $1,"-",$2}')" | ||
6 | [ "$devices" = "" ] && echo "no devices available" && exit 0 | ||
7 | |||
8 | # Prompt for device selection from the user | ||
9 | select=$(echo "$devices" | dmenu -i -p "Select a device") | ||
10 | [ "$select" = "" ] && echo "no device selected" && exit 0 | ||
11 | |||
12 | # Get confirmation since this is a potentially dangerous operation | ||
13 | yn=$(echo "No\nYes" | dmenu -i -p "Create encrypted partition on $select") | ||
14 | [ "$yn" != "Yes" ] && exit 0 | ||
15 | |||
16 | # Get device path from selection string | ||
17 | usb=$(echo $select | cut -d ' ' -f 1) | ||
18 | echo $usb | ||
19 | |||
20 | # Create LUKS partition on selected device (user will be promted for password to encrypt) | ||
21 | sudo cryptsetup --type luks2 luksFormat "$usb" | ||
22 | |||
23 | # Open device and create filesystem on partition | ||
24 | echo "creating filesystem" | ||
25 | map_name="crypt-create" | ||
26 | sudo cryptsetup open "$usb" "$map_name" | ||
27 | sudo mkfs.ext4 "/dev/mapper/$map_name" | ||
28 | |||
29 | # Close device after creating filesystem | ||
30 | sudo cryptsetup close "$map_name" | ||
31 | |||
32 | echo "done" | ||