Files
2026-09-08 03:46:52 +08:00

36 lines
777 B
Bash
Executable File

#!/bin/bash
# disconnects a VHD device from linux (should be unmounted)
# nbd-unmount path-to-vhd
DRIVE="$1"
QEMU_NBD_COMMAND="ps aux|grep '[q]emu-nbd.*--connect='|tr -s ' '|cut -f 11- -d ' '"
if [ -z "$DRIVE" ]; then
echo "Drive not provided"
exit 1
fi
if ! [ -f "$DRIVE" ]; then
echo "$DRIVE not existing"
exit 1
fi
# iterate over all mounted nbds
NBD_TARGET=
while read MOUNT; do
if echo "$MOUNT" | egrep "$DRIVE$" > /dev/null; then
NBD_TARGET="$(echo "$MOUNT" | sed -E 's!.*(--connect=?|-c\s+)([^[:space:]]+).*!\2!g')"
fi
done < <(eval "$QEMU_NBD_COMMAND")
if [ -z "$NBD_TARGET" ]; then
echo "$DRIVE not mounted"
exit 1
fi
if mount | grep ^"$NBD_TARGET" -q ; then
echo "$NBD_TARGET mounted, refusing to detach"
exit 1
fi
qemu-nbd --disconnect=$NBD_TARGET