78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| # -*- coding: utf-8 mode: sh -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8
 | |
| 
 | |
| 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"
 | |
| }
 | |
| 
 | |
| source "$(dirname "$0")/ulib/ulib" &&
 | |
| urequire DEFAULTS ||
 | |
| exit 1
 | |
| 
 | |
| 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"
 | |
| [ -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
 |