#!/bin/sh usage() { echo "Utilisation : $0 [-u] [[/dev/]device | [/dev/disk/by-uuid/]uuid | [/dev/mapper/]uuid] Monte un système de fichier dans un sous-répertoire de /media via udisks ou udisks2. Si aucun périphérique n'est donné, fmount tente de deviner le dernier périphérique inséré. Option de l'application : -u Démonte le système de fichier -h Affiche ce message d'aide" } finddev() { DEV=$1 if (echo $DEV | grep -q '^/dev/') && [ -e $DEV ] then echo $DEV fi if [ -e "/dev/disk/by-uuid/$DEV" ] then echo "/dev/disk/by-uuid/"$(echo $DEV | sed 's/.*/\L&/') fi if [ -e "/dev/$DEV" ] then echo "/dev/$DEV" fi if [ -e "/dev/mapper/$DEV" ] then echo "/dev/mapper/$DEV" fi } wrapper() { ACTION=$1 DEVICE=$2 case $ACTION in "mount") if [ -e /usr/bin/udisksctl ] then udisksctl mount -b $DEVICE else udisks --mount $DEVICE fi return $? ;; "umount") if [ -e /usr/bin/udisksctl ] then udisksctl unmount -b $DEVICE else udisks --unmount $DEVICE fi return $? ;; *) echo "Action invalide" return 1 ;; esac } guesslast() { LOG=$(dmesg| tail -n 50 | grep 'Attached scsi generic' -A 11 | tail -n 12) PARTS=$(echo $LOG | grep "sd.: sd.") if [ "$PARTS" = "" ] then DEV=$(echo $LOG | sed '/\[sd/s/.*\[\(sd[^\]]*\)\].*/\1/') else DEV=$(echo $PARTS | sed '/sd.:/s/.*sd.: \(sd[^ ]*\).*/\1/') fi echo $DEV } ACTION="mount" if [ $# -ne 0 ] && [ $1 = "-u" ] then ACTION="umount" shift fi if [ $# -ne 0 ] && [ $1 = "-h" ] then usage exit 0 fi if [ $# -ne 1 ] then DEV=$(guesslast) else DEV=$1 fi DEV=$(finddev $DEV) if [ -z "$DEV" ] then echo "Impossible de trouver le périphérique $DEV." exit 1 fi wrapper $ACTION $DEV exit $?