aboutsummaryrefslogtreecommitdiff
path: root/usb-safe
diff options
context:
space:
mode:
Diffstat (limited to 'usb-safe')
-rwxr-xr-xusb-safe132
1 files changed, 0 insertions, 132 deletions
diff --git a/usb-safe b/usb-safe
deleted file mode 100755
index e983360..0000000
--- a/usb-safe
+++ /dev/null
@@ -1,132 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-UUID="bdd2a016-b6db-493d-ad0a-e8dd8a93dfbd"
-NAME="usb_safe"
-MNT="/mnt/usb_safe"
-
-DEV_BY_UUID="/dev/disk/by-uuid/${UUID}"
-MAPPER="/dev/mapper/${NAME}"
-
-die() { echo "Error: $*" >&2; exit 1; }
-
-need_cmd() {
- command -v "$1" >/dev/null 2>&1 || die "Missing command: $1"
-}
-
-resolve_blockdev() {
- local target
- target="$(readlink -f "$DEV_BY_UUID")" || return 1
- [[ -b "$target" ]] || return 1
- echo "$target"
-}
-
-is_mapped() { [[ -e "$MAPPER" ]]; }
-is_mounted() { mountpoint -q "$MNT"; }
-
-show_busy() {
- echo "Mount appears busy. Processes using $MNT:"
- if command -v lsof >/dev/null 2>&1; then
- sudo lsof +f -- "$MNT" || true
- else
- echo "(Install lsof: sudo apt install lsof)"
- sudo fuser -vm "$MNT" || true
- fi
-}
-
-do_open() {
- need_cmd cryptsetup
- need_cmd mount
- need_cmd mountpoint
- need_cmd readlink
-
- [[ -e "$DEV_BY_UUID" ]] || die "UUID device not found: $DEV_BY_UUID (is the drive plugged in?)"
-
- local dev
- dev="$(resolve_blockdev)" || die "Could not resolve block device for UUID: $UUID"
-
- if is_mapped; then
- echo "Mapper already exists: $MAPPER"
- else
- sudo cryptsetup open "$dev" "$NAME"
- fi
-
- if [[ ! -d "$MNT" ]]; then
- sudo mkdir -p "$MNT"
- fi
-
- if is_mounted; then
- echo "Already mounted: $MNT"
- else
- sudo mount "$MAPPER" "$MNT"
- fi
-
- sudo sync
- echo "OK: unlocked and mounted at $MNT"
-}
-
-do_close() {
- need_cmd cryptsetup
- need_cmd umount
- need_cmd mountpoint
- need_cmd readlink
-
- if is_mounted; then
- sudo sync
- if ! sudo umount "$MNT"; then
- show_busy
- die "Unmount failed"
- fi
- fi
-
- if is_mapped; then
- sudo cryptsetup close "$NAME"
- fi
-
- if [[ -e "$DEV_BY_UUID" ]]; then
- local dev
- dev="$(resolve_blockdev)" || true
- if [[ -n "${dev:-}" ]] && command -v udisksctl >/dev/null 2>&1; then
- sudo udisksctl power-off -b "$dev" || true
- fi
- fi
-
- echo "OK: unmounted, closed, and powered off (if supported)"
-}
-
-do_status() {
- echo "UUID device: $DEV_BY_UUID"
- if [[ -e "$DEV_BY_UUID" ]]; then
- echo "Resolved: $(readlink -f "$DEV_BY_UUID")"
- else
- echo "Resolved: (not present)"
- fi
-
- echo -n "Mapper: "
- if is_mapped; then echo "OPEN ($MAPPER)"; else echo "CLOSED"; fi
-
- echo -n "Mount: "
- if is_mounted; then echo "MOUNTED ($MNT)"; else echo "NOT MOUNTED"; fi
-}
-
-usage() {
- cat <<EOF
-Usage: $0 {open|close|status}
-
-open - unlock LUKS by UUID and mount to $MNT
-close - sync, unmount, close mapper, power-off block device (best-effort)
-status - show current state
-EOF
-}
-
-main() {
- case "${1:-}" in
- open) do_open ;;
- close) do_close ;;
- status) do_status ;;
- *) usage; exit 2 ;;
- esac
-}
-
-main "$@"
-