fix: tighten mtm-ddwipe usage and device checks

Add an explicit mounted-device check with findmnt, shorten confirmation prompts, and align the usage text and log wording with the current script name.
This commit is contained in:
2026-04-27 23:40:28 +02:00
parent 55c55a4a08
commit 956cfd7325
2 changed files with 10 additions and 8 deletions
+1 -1
View File
@@ -14,7 +14,7 @@ description: mtm-ddwipe project conventions
- Keep user-facing messages short and clear. - Keep user-facing messages short and clear.
- Keep error and help messages short and clear. - Keep error and help messages short and clear.
- Prefer minimal, focused changes that preserve intent. - Prefer minimal, focused changes that preserve intent.
- Keep `.continue/rules/project.md` aligned with project conventions and concise. - Keep `.continue/rules/project.md` aligned and concise.
- `mtm-ddwipe` is a small Bash script with helper functions. - `mtm-ddwipe` is a small Bash script with helper functions.
- Keep the host and line-number removal behavior intact for related output processing. - Keep the host and line-number removal behavior intact for related output processing.
- `mtm-ddwipe` must print a usage line and support `-h`/`--help`. - `mtm-ddwipe` must print a usage line and support `-h`/`--help`.
+9 -7
View File
@@ -8,7 +8,7 @@ STARTDATESTRING=""
usage() { usage() {
cat <<EOF cat <<EOF
Usage: mtm-ddwipe-2 DEVICE Usage: mtm-ddwipe DEVICE
Wipe a block device. Wipe a block device.
@@ -58,8 +58,12 @@ check_device() {
check_device_not_in_use() { check_device_not_in_use() {
local dev="$1" local dev="$1"
if findmnt -rn --target "$dev" >/dev/null 2>&1; then
die "Device is mounted: $dev"
fi
if lsblk -nrpo NAME,MOUNTPOINT "$dev" | awk '$2 != "" { found=1 } END { exit !found }'; then if lsblk -nrpo NAME,MOUNTPOINT "$dev" | awk '$2 != "" { found=1 } END { exit !found }'; then
die "Device or one of its children is mounted: $dev" die "Device or child is mounted: $dev"
fi fi
} }
@@ -67,13 +71,11 @@ confirm_wipe() {
local dev="$1" local dev="$1"
local choice="" local choice=""
echo "Selected device:" echo "Device:"
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,MODEL,SERIAL "$dev" lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINT,MODEL,SERIAL "$dev"
echo "" echo ""
echo "This will destroy data on: $dev"
echo "Type exactly: WIPE $dev" echo "Type exactly: WIPE $dev"
echo "" read -r -p "Confirm: " choice
read -r -p "Confirmation: " choice
[ "$choice" = "WIPE $dev" ] || die "Canceled" [ "$choice" = "WIPE $dev" ] || die "Canceled"
echo "" echo ""
} }
@@ -143,7 +145,7 @@ wipe_dev() {
STARTDATE=$(date +%s) STARTDATE=$(date +%s)
STARTDATESTRING="$(date)" STARTDATESTRING="$(date)"
log "Begin wiping device $dev" log "Begin wiping: $dev"
echo "" echo ""
log "Start date :" log "Start date :"
log "$STARTDATESTRING" log "$STARTDATESTRING"