74 votes

Monter automatiquement les disques externes dans /media/LABEL au démarrage sans qu'un utilisateur soit connecté ?

Cette question est similaire, mais à l'opposé de ce que je veux. Je veux que les lecteurs USB externes soient montés automatiquement au démarrage, sans que personne ne soit connecté, à des emplacements tels que /media/<label> .

Je ne veux pas avoir à entrer toutes les données dans fstab, en partie parce que c'est fastidieux et ennuyeux, mais surtout parce que je ne peux pas prévoir ce que je vais y brancher ou comment les partitions vont changer dans le futur.

Je veux que les disques soient accessibles à des choses comme MPD et disponible lorsque je me connecte avec SSH. gnome-mount semble monter les choses uniquement lorsque vous êtes connecté localement à une session graphique Gnome.

74voto

user12786 Points 454
  • Note pour Ubuntu Server 11.10 : Ce script échoue sur Ubuntu Server 11.10 à cause de l'obsolète vol_id commandement. vol_id a été remplacée par blkid . Pour corriger le script, remplacez "vol_id" par "blkid -o udev" dans le fichier udev-auto-mount.sh script.

Je me suis creusé la tête à ce sujet pendant un certain temps et je pense avoir trouvé une solution efficace. Celle-ci est développée et testée sur un système basé sur Debian, elle devrait donc fonctionner sur Ubuntu. Je vais indiquer les hypothèses qu'il fait pour qu'il puisse être adapté à d'autres systèmes.

  • Il montera automatiquement les disques USB sur le plugin, et ne devrait pas prendre beaucoup de temps pour s'adapter au Firewire.

  • Il utilise UDEV, donc pas de manipulation avec HAL/DeviceKit/GNOME-quelque chose.

  • Il crée automatiquement un /media/LABEL le répertoire dans lequel monter le périphérique.

  • Cependant, il puede interférer avec d'autres compteurs automatiques ; je ne peux pas le tester. Je m'attends à ce que, avec Gnome-VFS actif, les deux tentent d'effectuer le montage... si Gnome-VFS échoue le montage, il se peut qu'il ne configure pas d'icône de bureau. Le démontage à partir de Gnome devrait être possible, mais pourrait nécessiter gksudo ou similaire.

Je n'ai pas testé cela au démarrage du système, mais la seule raison que je vois pour laquelle cela pourrait ne pas fonctionner est qu'il essaie de monter la clé USB avant que le système ne soit prêt pour les montages. Si c'est le cas, vous aurez probablement besoin d'une modification supplémentaire du script de montage. (Je suis vérification avec ServerFault pour voir s'il y a des conseils, mais il n'y a pas beaucoup d'intérêt pour ça là-bas).

On y va, alors.


Références UDEV :


Contexte (UDEV ? Qu'est-ce que c'est ?)

UDEV est le système hotplug du noyau. C'est ce qui configure automatiquement les périphériques appropriés et les liens symboliques de périphériques (par ex. /dev/disk/by-label/<LABEL> ), à la fois au moment du démarrage et pour les périphériques ajoutés pendant l'exécution du système.

D-Bus et HAL sont utilisés pour envoyer des événements matériels aux auditeurs tels que les environnements de bureau. Ainsi, lorsque vous vous connectez à GNOME et insérez un CD ou branchez une clé USB, cet événement suit cette chaîne :

kernel -> udev -> dbus -> hal -> gnome-vfs/nautilus (mount)

Et presto, votre disque est monté. Mais dans un système sans tête, nous ne voulons pas avoir à nous connecter pour bénéficier des avantages du montage automatique.

Règles Udev

Comme UDEV nous permet d'écrire des règles et d'exécuter des programmes lors de l'insertion du périphérique, c'est un choix idéal. Nous allons tirer parti des règles existantes de Debian/Ubuntu, les laisser configurer le programme /dev/disk/by-label/<LABEL> symlink pour nous, et ajouter une autre règle qui montera le périphérique pour nous.

Les règles d'UDEV sont conservées dans /etc/udev/rules.d (et /lib/udev/rules.d sur Karmic), et sont traitées par ordre numérique. Tout fichier ne commençant pas par un numéro est traité après les fichiers numérotés. Sur mon système, les règles de HAL sont dans un fichier appelé 90-hal.rules donc j'ai mis mes règles dans 89-local.rules pour qu'ils soient traités avant d'arriver à HAL. Principalement, vous devez vous assurer que ces règles se produisent après que les 60-persistent-storage.rules . local.rules peut être suffisant.

Mettez ceci dans votre nouveau fichier de règles :

# /etc/udev/rules.d/local.rules 
# /etc/udev/rules.d/89-local.rules
# ADD rule: if we have a valid ID_FS_LABEL_ENC, and it's USB, mkdir and mount
ENV{ID_FS_LABEL_ENC}=="?*",   ACTION=="add",      SUBSYSTEMS=="usb", \
         RUN+="/usr/local/sbin/udev-automounter.sh %k"
  • Assurez-vous qu'il n'y a pas d'espace après le \ juste un newline ( \n ).

  • Changement SUBSYSTEMS=="usb" a SUBSYSTEMS=="usb|ieee1394" pour le support Firewire.

  • Si vous voulez que le périphérique soit toujours la propriété d'un utilisateur particulier, ajoutez une balise OWNER="username" clause. Si vous n'avez besoin que des fichiers appartenant à un utilisateur particulier, modifiez plutôt le script mount script.

Lecture de la règle

Il ajoute un programme à exécuter à la liste des programmes à exécuter du périphérique. Il identifie les périphériques de partition USB par <LABEL> puis transmet ces informations à un script qui effectue le montage. Plus précisément, cette règle correspond :

  1. *`ENV{ID_FS_LABEL_ENC}=="?"** -- une variable d'environnement définie par une règle système antérieure. Elle n'existe pas pour les systèmes autres que les systèmes de fichiers, c'est pourquoi nous la vérifions. Nous voulons en fait utiliserID_FS_LABEL` pour le point de montage, mais je n'ai pas convaincu UDEV de l'échapper pour moi, donc nous laisserons le script de montage gérer cela.

    Cette variable et d'autres variables d'environnement sont obtenues par udev en utilisant la commande vol_id ( déprécié ). C'est un outil pratique pour voir rapidement les détails d'une partition :

    $ sudo vol_id /dev/sdc1
    ID_FS_TYPE=ext2
    ID_FS_UUID=a40d282a-4a24-4593-a0ab-6f2600f920dd
    ID_FS_LABEL=Travel Dawgs
    ID_FS_LABEL_ENC=Travel\x20Dawgs
    ID_FS_LABEL_SAFE=Travel_Dawgs
  2. ACTION=="add" -- ne correspond qu'à add des événements...

  3. SUBSYSTEMS=="usb" -- ne correspondent qu'aux dispositifs qui se trouvent sur le bus USB. Nous utilisons SUBSYSTEMS ici parce que cela correspond aux parents de notre périphérique ; le périphérique qui nous intéresse sera en fait SUBSYSTEM=="scsi". La correspondance avec un périphérique USB parent évite d'ajouter notre programme aux disques internes.

  4. RUN+="..." -- pas une correspondance, mais une action : ajouter ce programme à la liste des programmes à exécuter. Dans les arguments du programme, %k est étendu au nom du dispositif (par exemple sdc1 pas /dev/sdc1 ) et $env{FOO} récupère le contenu de la variable d'environnement FOO.

Tester la règle

Le premier lien de référence (ci-dessus) est un excellent tutoriel UDEV, mais il est légèrement obsolète. Les programmes qu'il exécute pour tester vos règles ( udevtest en particulier) ont été remplacés par le fourre-tout udevadm utilitaire.

Après avoir ajouté la règle, branchez votre appareil. Laissez-lui quelques secondes, puis vérifiez avec quel appareil il a été assigné :

$ ls -l /dev/disk/by-label/*
lrwxrwxrwx 1 root root 10 2009-10-25 07:27 label_Foo -> ../../sda1
lrwxrwxrwx 1 root root 10 2009-10-25 07:27 label_Bar -> ../../sdb1
lrwxrwxrwx 1 root root 10 2009-10-25 07:27 label_Baz -> ../../sdc1

Si votre lecteur amovible contient label_Baz c'est sur l'appareil sdc1 . Exécutez ceci et regardez la sortie vers la fin :

$ sudo udevadm test /sys/block/sdc/sdc1
parse_file: reading (...)                           (many lines about files it reads)
import_uevent_var: import into environment: (...)   (many lines about env variables)
(...)                                               (many lines tracing rule matches & programs run)
update_link: found 1 devices with name 'disk/by-label/LABEL_BAZ'
update_link: found '/block/sdc/sdc1' for 'disk/by-label/LABEL_BAZ'
update_link: compare (our own) priority of '/block/sdc/sdc1' 0 >= 0
update_link: 'disk/by-label/LABEL_BAZ' with target 'sdc1' has the highest priority 0, create it
udevtest: run: '/usr/local/sbin/udev-automounter.sh sdc1 LABEL_BAZ'
udevtest: run: 'socket:/org/freedesktop/hal/udev_event'
udevtest: run: 'socket:@/org/kernel/udev/monitor'

Cherchez le nom du script de notre RUN+= dans les dernières lignes (3e en partant du bas dans cet exemple). Vous pouvez voir les arguments qui seraient utilisés pour ce dispositif. Vous pouvez exécuter cette commande maintenant pour vérifier que les arguments sont corrects ; si elle fonctionne sur votre ligne de commande, elle devrait fonctionner automatiquement lorsqu'un périphérique est inséré.

Vous pouvez également surveiller les événements UDEV en temps réel : exécutez sudo udevadm monitor (ver man udevadm pour plus de détails sur les commutateurs). Il suffit ensuite de brancher un nouveau périphérique et de regarder les événements défiler. (Probablement exagéré, sauf si vous êtes dans les détails de très bas niveau...)

Recharger les règles

Une fois que vous avez vérifié que la règle est lue correctement, vous devez demander à UDEV de recharger ses règles pour que la nouvelle règle prenne effet. Utilisez l'une de ces méthodes (si la première ne fonctionne pas, la seconde devrait... mais essayez d'abord la première) :

  • exécuter sudo udevadm control --reload-rules

  • exécuter sudo /etc/init.d/udev reload

  • redémarrer


script ! En fait, 2 script...

Voici le premier script. Comme le programme que nous exécutons doit se terminer rapidement, cela fait tourner le second script en arrière-plan. Mettez ça dans /usr/local/sbin/udev-automounter.sh :

#!/bin/sh
#
# USAGE: usb-automounter.sh DEVICE 
#   DEVICE   is the actual device node at /dev/DEVICE

/usr/local/sbin/udev-auto-mount.sh ${1} &

Voici le deuxième script. Cela permet de vérifier un peu plus les entrées. Mettez ceci dans /usr/local/sbin/udev-auto-mount.sh . Vous pouvez vouloir modifier les options de montage ci-dessous. Ce script s'occupe maintenant de trouver le LABEL de la partition par lui-même ; UDEV envoie seulement le nom du DEVICE.

S'il y a un problème de montage des lecteurs au démarrage vous pouvez mettre une belle et longue sleep 60 dans ce script, pour donner au système le temps de monter complètement avant que le script tente de monter le lecteur.

J'ai donné une suggestion dans les commentaires pour savoir comment vérifier (exécuter ps pour voir si un serveur web est en cours d'exécution), mais vous devrez adapter cela à votre système. Je pense que la plupart des serveurs réseau que vous pourriez utiliser suffiraient à cet effet -- nfsd, smbd, apache, etc. Le risque, bien sûr, est que le mount script échoue si le service n'est pas en cours d'exécution, alors peut-être que tester l'existence d'un fichier particulier serait une meilleure solution.

#!/bin/sh
#
# USAGE: udev-auto-mount.sh DEVICE
#   DEVICE   is the actual device node at /dev/DEVICE
# 
# This script takes a device name, looks up the partition label and
# type, creates /media/LABEL and mounts the partition.  Mount options
# are hard-coded below.

DEVICE=$1

# check input
if [ -z "$DEVICE" ]; then
   exit 1
fi

# test that this device isn't already mounted
device_is_mounted=`grep ${DEVICE} /etc/mtab`
if [ -n "$device_is_mounted" ]; then
   echo "error: seems /dev/${DEVICE} is already mounted"
   exit 1
fi

# If there's a problem at boot-time, this is where we'd put
# some test to check that we're booting, and then run
#     sleep 60
# so the system is ready for the mount below.
#
# An example to experiment with:
# Assume the system is "booted enough" if the HTTPD server is running.
# If it isn't, sleep for half a minute before checking again.
#
# The risk: if the server fails for some reason, this mount script
# will just keep waiting for it to show up.  A better solution would
# be to check for some file that exists after the boot process is complete.
#
# HTTPD_UP=`ps -ax | grep httpd | grep -v grep`
# while [ -z "$HTTPD_UP" ]; do
#    sleep 30
#    HTTPD_UP=`ps -ax | grep httpd | grep -v grep`
# done

# pull in useful variables from vol_id, quote everything Just In Case
eval `/sbin/vol_id /dev/${DEVICE} | sed 's/^/export /; s/=/="/; s/$/"/'`

if [ -z "$ID_FS_LABEL" ] || [ -z "$ID_FS_TYPE" ]; then
   echo "error: ID_FS_LABEL is empty! did vol_id break? tried /dev/${DEVICE}"
   exit 1
fi

# test mountpoint - it shouldn't exist
if [ ! -e "/media/${ID_FS_LABEL}" ]; then

   # make the mountpoint
   mkdir "/media/${ID_FS_LABEL}"

   # mount the device
   # 
   # If expecting thumbdrives, you probably want 
   #      mount -t auto -o sync,noatime [...]
   # 
   # If drive is VFAT/NFTS, this mounts the filesystem such that all files
   # are owned by a std user instead of by root.  Change to your user's UID
   # (listed in /etc/passwd).  You may also want "gid=1000" and/or "umask=022", eg:
   #      mount -t auto -o uid=1000,gid=1000 [...]
   # 
   # 
   case "$ID_FS_TYPE" in

       vfat)  mount -t vfat -o sync,noatime,uid=1000 /dev/${DEVICE} "/media/${ID_FS_LABEL}"
              ;;

              # I like the locale setting for ntfs
       ntfs)  mount -t auto -o sync,noatime,uid=1000,locale=en_US.UTF-8 /dev/${DEVICE} "/media/${ID_FS_LABEL}"
              ;;

              # ext2/3/4 don't like uid option
       ext*)  mount -t auto -o sync,noatime /dev/${DEVICE} "/media/${ID_FS_LABEL}"
              ;;
   esac

   # all done here, return successful
   exit 0
fi

exit 1

Super bonus de nettoyage script !

Encore un script. Tout ce qu'il fait est de démonter le périphérique et de supprimer les répertoires du point de montage. Il suppose qu'il a des privilèges pour le faire, donc vous devrez l'exécuter avec le code suivant sudo . Ce script prend maintenant le point de montage complet sur la ligne de commande, par exemple :

$ /usr/local/sbin/udev-unmounter.sh "/media/My Random Disk"

Mettez ça dans /usr/local/sbin/udev-unmounter.sh :

#!/bin/sh
#
# USAGE: udev-unmounter.sh MOUNTPT
#   MOUNTPT is a mountpoint we want to unmount and delete.
MOUNTPT="$1"

if [ -z "$MOUNTPT" ]; then
   exit 1
fi

# test mountpoint - it should exist
if [ -e "${MOUNTPT}" ]; then

   # very naive; just run and pray
   umount -l "${MOUNTPT}" && rmdir "${MOUNTPT}" && exit 0

   echo "error: ${MOUNTPT} failed to unmount."
   exit 1
fi

echo "error: ${MOUNTPT} does not exist"
exit 1

9voto

user12786 Points 454

Une dernière option que d'autres ont suggérée sur le net est la suivante ivman mais cela semble dépendre de pmount ce qui, comme vous l'avez déjà dit, ne fonctionne pas. pmount est abandonné et ivman est presque la même.

Le remplacement de ivman es halevt et c'est disponible dans Karmic. Il s'agit d'une réimplémentation de ivman (lire : "maintenu" et "ne dépend pas de pmount"). Le paquet n'est pas disponible sur Jaunty, bien que vous puissiez le construire vous-même si vous ne prévoyez pas de mise à jour.

Ces deux outils se situent au-dessus des couches DBus et HAL et répondent à leurs événements. Apparemment, tous deux peuvent fonctionner soit comme un démon système, soit comme un gestionnaire de montage de session utilisateur (à la Gnome-VFS) -- l'outil /etc/defaults/{ivman,halevt} sont en charge des paramètres du système.

Voici quelques instructions pour la mise au point ivman à utiliser /media/<LABEL> points de montage. Il est probable que halevt a une façon plus simple de le faire, mais peut-être qu'ils vous aideront à trouver une réponse.


Travailler avec HALEVT

Update : Dans le but d'obtenir également des montages automatiques de CD, ce que ma réponse UDEV ne fournit pas, j'ai regardé de plus près à halevt . J'ai trouvé ceci article de blog qui a permis d'expliquer beaucoup de choses sur le processus. J'ai dû compiler mes propres halevt pour Debian Lenny (heureusement, toutes les dépendances étaient dans la section lenny-backports). Une fois installé, le processus n'a pas été horrible :

  1. Assurez-vous que le système halevt-daemon est activé dans le fichier /etc/default/halevt
  2. Permettre à l'utilisateur du système halevt de monter les périphériques dans /etc/PolicyKit/PolicyKit.conf (voir ci-dessous ; source )
  3. Modifiez la politique de HAL pour copier l'étiquette du volume dans le point de montage préféré dans /etc/hal/fdi/policy/preferences.fdi (voir ci-dessous)
  4. Si vous voulez le support CD/DVD, prenez le eject.hal script de l'article de blog ci-dessus, modifiez-le et sauvegardez-le dans le fichier /usr/local/bin .
  5. Modifiez la configuration du système halevt pour activer les montages en /etc/halevt/halevt.xml
  6. Ajoutez du code aux scripts pré- et post-session de votre gestionnaire de connexion pour arrêter le halevt-daemon du système lorsque quelqu'un se connecte, et le redémarrer lorsqu'il se déconnecte.

Si vous devez redémarrer les démons HAL et HALEVT pour vérifier vos nouvelles configurations, utilisez ceci pour les mettre dans le bon ordre :

sudo sh -c "/etc/init.d/halevt stop ; /etc/init.d/hal restart ; /etc/init.d/halevt start"

Étape 1

Vérifiez que START_DAEMON=yes en /etc/default/halevt .

Étape 2

En /etc/PolicyKit/PolicyKit.conf ajoutez ceci à l'intérieur de el <config></config> section :

<match action="org.freedesktop.hal.storage.mount-removable">
   <match user="halevt">
      <return result="yes"/>
   </match>
</match>

Étape 3

En /etc/hal/fdi/policy/preferences.fdi ajoutez ceci à l'intérieur de la section ` :

<match key="volume.label" empty="false">
    <match key="volume.label" is_absolute_path="false">
        <merge key="volume.policy.desired_mount_point" type="copy_property">volume.label</merge>
    </match>
</match>

Étape 4

Le script est bon mais doit être exécuté. /bin/bash ; certains systèmes peuvent en fait utiliser /bin/dash cuando /bin/sh est appelé. Changez donc la ligne supérieure dans le script pour être sûr d'obtenir le bon :

#!/bin/sh         <------ old first line

#!/bin/bash       <------ new first line

Étape 5

C'est la partie amusante. Votre système peut fournir une base /etc/halevt/halevt.xml déjà, vous devrez donc l'adapter à votre propre usage. Dans mon cas, mon système offrait déjà le montage de base des amovibles, mais j'ai dû ajouter la prise en charge du montage des CDROM et du bouton d'éjection.

L'article de blog que j'ai mentionné contient un bon exemple de configuration XML à regarder pour vos propres ajustements. Il s'agit principalement de mettre en place un remplacement de gnome-mount pour l'auteur de fluxbox Son exemple XML en fait donc plus que ce que vous voulez, mais c'est un excellent moyen de se faire une idée de ce que vous pouvez faire. Vous trouverez également de bons exemples dans /usr/share/doc/halevt/examples .

J'ai aussi dû courir sudo sh -c "mkdir /var/halevt ; chown halevt:plugdev /var/halevt" avant que tout fonctionne.

Voici mes ajouts pour faire fonctionner le montage automatique des CD/DVD :

<!-- CD/DVD mount -->
<halevt:Device match="hal.block.device &amp; hal.block.is_volume = true  &amp; hal.volume.is_disc = true &amp; hal.volume.disc.has_data = true">
   <halevt:Property name="hal.volume.is_mounted">
      <halevt:Action value="true" exec="halevt-mount -u $hal.udi$ -p $hal.volume.policy.desired_mount_point$ -m 002"/>
   </halevt:Property>
</halevt:Device>

<!-- CD/DVD eject button support -->
<halevt:Device match="hal.storage.drive_type = cdrom">
   <halevt:Condition name="EjectPressed" exec='/usr/local/bin/eject.hal $hal.block.device$'/>
</halevt:Device>

Étape 6

Une fois que vous avez fait fonctionner le système halevt-daemon, vous devrez le désactiver lorsque vous vous connectez à GNOME, et le redémarrer lorsque vous vous déconnectez. (Voir ma réponse à cette question pour les gestionnaires de connexion non GDM). Ce truc est théorique puisque je ne l'utilise pas, mais il devrait fonctionner.

En /etc/gdm/PreSession/Default ajoutez ceci pour arrêter le système halevt-daemon :

/etc/init.d/halevt stop

En /etc/gdm/PostSession/Default , ajoutez ceci pour redémarrer le système halevt-daemon :

/etc/init.d/halevt start

8voto

Costin Gușă Points 686

Au fil du temps, des solutions plus faciles apparaissent.

Cette solution s'appuie sur le paquetage logiciel udevil qui a été écrit dans ce but et ne nécessite aucun bricolage avec les règles udev. Elle est probablement préférable (pour les nouveaux et les anciens utilisateurs) en tant que solution simple et directe.

El devmon script de udevil fait toute la magie en ne dépendant que de udev et glib. Il fonctionne presque directement sans nécessiter de configuration initiale.

Tout ce que j'ai fait sur mon poste de travail a été d'appeler devmon à partir de rc.local comme ça :
devmon 2>&1 >> /var/log/devmon &
Pour votre confort, vous pourriez vouloir intégrer ceci dans un script d'init au lieu de rc.local en utilisant un outil automatisé tel que pleaserun pour le créer : https://unix.stackexchange.com/a/124609/42673

Après l'avoir fait fonctionner, le stockage que j'ai branché est inspecté (il cherche des partitions et s'il en trouve, il regarde leurs étiquettes de système de fichiers) puis monté dans /media/FILESYSTEM_LABEL .
Je ne pouvais pas imaginer quelque chose de plus simple que cela, sauf peut-être que le (in)célèbre systemd intègre cette fonctionnalité à un moment donné dans le futur.

udevil At A Glance ( github.io/udevil )
script : devmon ( igurublog/script-devmon )

3voto

mrm Points 151

La réponse de quack quixote ne fonctionne pas sur Ubuntu Lucid Lynx (10.04) -- il n'y a pas de /sbin/vol_id commandement.

Plutôt que d'être fantaisiste et d'utiliser udev, mettez ceci dans votre /etc/rc.local et c'est tout :

for dev in $(ls -1 /dev/disk/by-label/* | grep -v EFI) ; do
  label=$(basename $dev)
  mkdir -p /media/$label
  $(mount | grep -q /media/$label) || mount $dev /media/$label
done

3voto

damageboy Points 926

Pour débusquer les excellentes instructions de suppression de Quack Quxote :

Ajoutez la ligne suivante au fichier de règles udev que vous avez créé précédemment (/etc/udev/rules.d)".

ENV{ID_FS_LABEL_ENC}=="?*",   ACTION=="remove",      SUBSYSTEMS=="usb", \
         RUN+="/usr/local/sbin/udev-autounmounter.sh %k"

Ensuite, créez le script suivant et donnez-lui le chmod exécutable (/usr/local/sbin/udev-autounmounter.sh) avec le contenu suivant :

#!/bin/sh
#
# USAGE: usb-autounmounter.sh DEVICE 
#   DEVICE   is the actual device node at /dev/DEVICE

/usr/local/sbin/udev-auto-unmount.sh ${1} &

Enfin, le script de démontage script lui-même (udev-auto-unmount.sh) :

#!/bin/sh
#
# USAGE: udev-auto-unmount.sh DEVICE
#   DEVICE   is the actual device node at /dev/DEVICE
# 
# This script takes a device name, looks up the partition label and
# type, creates /media/LABEL and mounts the partition.  Mount options
# are hard-coded below.

DEVICE=$1

# check input
if [ -z "$DEVICE" ]; then
   exit 1
fi

#test that the device is already mounted
MOUNTPT=`mount | grep ${DEVICE} | cut -d ' ' -f 3`
if [ -z "${MOUNTPT}" ]; then
   echo "error: the device is not already mounted"
   exit 1
fi

# test mountpoint - it should exist
if [ -e "${MOUNTPT}" ]; then

   # very naive; just run and pray
   umount -l "${MOUNTPT}" && rmdir "${MOUNTPT}" && exit 0

   echo "error: ${MOUNTPT} failed to unmount."
   exit 1
fi

echo "error: ${MOUNTPT} does not exist"
exit 1

Ainsi, avec les autres instructions, le répertoire apparaîtra et disparaîtra automatiquement lors des événements udev.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X