nutools/moiso

76 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
# -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
source "$(dirname -- "$0")/lib/ulib/auto" || exit 1
function display_help() {
uecho "$scriptname: Monter une image ISO
USAGE
$scriptname image.iso [mountpoint]
Par défaut, l'image iso est montée sur un répertoire avec le même nom de base.
Si l'image est déjà montée, elle est démontée. Les options -m et -u permettent
de modifier le comportement par défaut.
OPTIONS
-m
Forcer le montage
-u
Forcer le démontage"
}
action=auto
parse_opts "${PRETTYOPTS[@]}" \
--help '$exit_with display_help' \
-m action=mount \
-u action=umount \
@ args -- "$@" && set -- "${args[@]}" || die "$args"
image="$1"
[ -n "$image" ] || die "Vous devez spécifier l'image iso à monter"
[ -d "$image" -a -f "$image.iso" ] && image="$image.iso"
[ -f "$image" ] || die "$image: fichier introuvable"
image="$(abspath "$image")"
mountpoint="$2"
if [ -z "$mountpoint" ]; then
imagedir="$(dirname "$image")"
origname="$(basename "$image")"
basename="${origname%.*}"
if [ "$basename" == "$origname" ]; then
# fichier sans extension
i=
while [ -d "$imagedir/$basename.mp$i" ]; do
[ -n "$i" ] || i=0
i=$(($i + 1))
done
mountpoint="$imagedir/$basename.mp$i"
else
mountpoint="$imagedir/$basename"
fi
fi
mountpoint="$(abspath "$mountpoint")"
mkdir -p "$mountpoint" || die
is_root && sudo= || sudo=sudo
if [ "$action" == "auto" ]; then
if mount | grep -q "$mountpoint"; then
action=umount
else
action=mount
fi
fi
if [ "$action" == "umount" ]; then
if $sudo umount "$mountpoint"; then
echo "Volume démonté avec succès"
rmdir "$mountpoint" 2>/dev/null
exit 0
fi
elif [ "$action" == "mount" ]; then
if $sudo mount -o loop "$image" "$mountpoint"; then
echo "Volume monté avec succès sur $(ppath "$mountpoint")"
exit 0
fi
fi