Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
utilisateurs:captnfab:tutos:pmount-udisks [03/07/2014 13:22] captnfab [Installation] |
utilisateurs:captnfab:tutos:pmount-udisks [07/07/2014 20:57] (Version actuelle) smolski [Problèmes rencontrés] |
||
---|---|---|---|
Ligne 16: | Ligne 16: | ||
===== Installation ===== | ===== Installation ===== | ||
+ | |||
+ | <note info>Attention, pensez bien à désactiver le montage automatique avant d'utiliser ce script, sans quoi il risque de se révéler relativement inconfortable. | ||
+ | Voir [[:doc:environnements:gnome:gnome3.4|Comment désactiver l'automount sous Gnome3.4#modifier-montage-auto]]</note> | ||
Copier le fichier suivant dans votre répertoire ''~/bin/'', à créer s'il n'existe pas. | Copier le fichier suivant dans votre répertoire ''~/bin/'', à créer s'il n'existe pas. | ||
Ligne 28: | Ligne 31: | ||
Monte un système de fichier dans un sous-répertoire de /media via udisks ou | Monte un système de fichier dans un sous-répertoire de /media via udisks ou | ||
udisks2. | udisks2. | ||
+ | Si aucun périphérique n'est donné, fmount tente de deviner le dernier périphérique inséré. | ||
Option de l'application : | Option de l'application : | ||
-u Démonte le système de fichier | -u Démonte le système de fichier | ||
-h Affiche ce message d'aide" | -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 | ||
} | } | ||
Ligne 67: | Ligne 96: | ||
guesslast() | guesslast() | ||
{ | { | ||
- | ACTION=$1 | ||
- | |||
LOG=$(dmesg| tail -n 50 | grep 'Attached scsi generic' -A 11 | tail -n 12) | LOG=$(dmesg| tail -n 50 | grep 'Attached scsi generic' -A 11 | tail -n 12) | ||
PARTS=$(echo $LOG | grep "sd.: sd.") | PARTS=$(echo $LOG | grep "sd.: sd.") | ||
Ligne 74: | Ligne 101: | ||
then | then | ||
DEV=$(echo $LOG | sed '/\[sd/s/.*\[\(sd[^\]]*\)\].*/\1/') | DEV=$(echo $LOG | sed '/\[sd/s/.*\[\(sd[^\]]*\)\].*/\1/') | ||
- | echo "Action '$ACTION' sur $DEV" | ||
- | wrapper $ACTION $DEV | ||
else | else | ||
DEV=$(echo $PARTS | sed '/sd.:/s/.*sd.: \(sd[^ ]*\).*/\1/') | DEV=$(echo $PARTS | sed '/sd.:/s/.*sd.: \(sd[^ ]*\).*/\1/') | ||
- | echo "Action '$ACTION' sur $DEV" | ||
- | wrapper $ACTION $DEV | ||
fi | fi | ||
+ | echo $DEV | ||
} | } | ||
ACTION="mount" | ACTION="mount" | ||
- | if [ $# -lt 1 ] | + | if [ $# -ne 0 ] && [ $1 = "-u" ] |
- | then | + | |
- | guesslast $ACTION | + | |
- | exit 1 | + | |
- | fi | + | |
- | + | ||
- | if [ $1 = "-u" ] | + | |
then | then | ||
ACTION="umount" | ACTION="umount" | ||
Ligne 97: | Ligne 115: | ||
fi | fi | ||
- | if [ $1 = "-h" ] | + | if [ $# -ne 0 ] && [ $1 = "-h" ] |
then | then | ||
usage | usage | ||
Ligne 105: | Ligne 123: | ||
if [ $# -ne 1 ] | if [ $# -ne 1 ] | ||
then | then | ||
- | guesslast $ACTION | + | DEV=$(guesslast) |
- | exit 1 | + | else |
+ | DEV=$1 | ||
fi | fi | ||
- | DEV=$1 | + | DEV=$(finddev $DEV) |
- | if (echo $DEV | grep -q '^/dev/') && [ -e $DEV ] | + | if [ -z "$DEV" ] |
then | then | ||
- | wrapper $ACTION $DEV | + | echo "Impossible de trouver le périphérique $DEV." |
- | exit $? | + | exit 1 |
fi | fi | ||
- | if [ -e "/dev/disk/by-uuid/$DEV" ] | + | wrapper $ACTION $DEV |
- | then | + | exit $?</code> |
- | wrapper $ACTION "/dev/disk/by-uuid/"$(echo $DEV | sed 's/.*/\L&/') | + | |
- | exit $? | + | |
- | fi | + | |
- | + | ||
- | if [ -e "/dev/$DEV" ] | + | |
- | then | + | |
- | wrapper $ACTION "/dev/$DEV" | + | |
- | exit $? | + | |
- | fi | + | |
- | + | ||
- | if [ -e "/dev/mapper/$DEV" ] | + | |
- | then | + | |
- | wrapper $ACTION "/dev/mapper/$DEV" | + | |
- | exit $? | + | |
- | fi | + | |
- | + | ||
- | echo "Impossible de trouver le périphérique $DEV." | + | |
- | exit 1 | + | |
- | </code> | + | |
Rendez ce fichier exécutable : | Rendez ce fichier exécutable : | ||
Ligne 152: | Ligne 152: | ||
Monte un système de fichier dans un sous-répertoire de /media via udisks ou | Monte un système de fichier dans un sous-répertoire de /media via udisks ou | ||
udisks2. | udisks2. | ||
+ | Si aucun périphérique n'est donné, fmount tente de deviner le dernier périphérique inséré. | ||
Option de l'application : | Option de l'application : | ||
-u Démonte le système de fichier | -u Démonte le système de fichier | ||
-h Affiche ce message d'aide</code> | -h Affiche ce message d'aide</code> | ||
+ | |||
+ | ==== Par l'exemple ==== | ||
+ | |||
+ | Si des disques occupent sda sdb sdc sdd sde, taper pour le nouveau disque à monter : | ||
+ | <code user>fmount sdf1</code> | ||
+ | |||
+ | Pour démonter le même : | ||
+ | <code user>fmount -u sdf1</code> | ||
+ | |||
+ | Et voilà ! :-D | ||
+ | ===== Problèmes rencontrés ===== | ||
+ | |||
+ | ==== Montage via ssh ===== | ||
+ | |||
+ | Udisks utilise policy-kit et son système de session actives. Par défaut, seul l'utilisateur de la session active (affichée à l'écran) peut utiliser udisks. La conséquence directe est qu'un utilisateur se connectant par ssh ne peut pas monter les disques externes. | ||
+ | |||
+ | Une solution est de changer la politique de montage en copiant le fichier suivant dans le dossier ''/etc/polkit-1/localauthority/50-local.d/'' : | ||
+ | |||
+ | <code ini /etc/polkit-1/localauthority/50-local.d/50-mount.pkla> | ||
+ | [Mount a system-internal device] | ||
+ | Identity=* | ||
+ | Action=org.freedesktop.udisks.* | ||
+ | ResultAny=yes | ||
+ | ResultActive=yes | ||
+ | ResultInactive=yes</code> | ||
+ | |||
+ | Au prochain chargement des règles((le reboot)), tout ira bien \o/ | ||