web-dev-qa-db-fra.com

Comment monter en ligne de commande comme le fait Nautilus?

Sur ma machine Linux Ubuntu, je peux facilement monter des lecteurs connectés par USB ou des CD-ROM en cliquant sur les icônes de périphériques que je peux trouver sur le bureau.

Par exemple, si je clique sur une icône de lecteur connecté USB, les choses suivantes se produisent:

  • un répertoire/media/LABEL est créé automatiquement (où LABEL est l’étiquette du disque et peut varier d’un disque à l’autre)
  • le système de fichiers sur le périphérique est monté sur/media/LABEL

Ce processus est très différent du montage à l'aide de la commande mount. En particulier:

  • vous n'avez pas besoin d'être root (ou vous n'avez pas besoin de modifier/etc/fstab pour permettre à un utilisateur ordinaire de monter le périphérique)
  • le répertoire/media/LABEL est créé automatiquement
  • le nom du répertoire change en fonction du libellé du volume.

Il existe une commande en ligne de commande qui se comporte comme les installations de montage de l’interface graphique de Gnome?

31
Andrea Francia

Voir la commande pmount pour plus d'informations sur l'utilisation

9
phihag

je suppose que ce que vous recherchez, c’est "gfvs-mount" (il a récemment remplacé le "gnome-mount" dont la plupart des gens parlent; les deux gnome-mount et pmount comptent sur HAL, qui est en cours de suppression progressive).

il n'y a pas de page de manuel, il suffit donc de taper "gvfs-mount --help" pour les détails, ou de lire ici: Comment monter des systèmes de fichiers à partir de la ligne de commande dans Ubuntu 10.04 et 10.10 ; L’utilisation de base est aussi simple que possible:

"gvfs-mount --list" pour obtenir une liste des volumes montés/montables;

"gvfs-mount [-u]" pour le monter, par exemple. "gvfs-mount smb: // serveur/partage" ou "gvfs-mount WINDOWS".

malheureusement, il semble y avoir un bogue entraînant un message indiquant que le montage du nom de volume "Emplacement de montage: le volume ne met pas en oeuvre le montage" a été tenté, mais que "gvfs-mount -d/dev /" devrait fonctionner.

sur mon Ubuntu 10.04, je peux monter des partages smb de cette manière, mais pas les partitions Windows - mais je me trompe peut-être, mon besoin était de monter des partages smb et je n'ai pas pris la peine de rechercher le problème des partitions NTFS.

36
mwx

Sur les distributions modernes, HAL n’est plus utilisé, pmount existe toujours mais il est déconseillé ... utilisez:

udisks --mount /dev/sdXN
22
noname

Oui il y a. Il s'appelle ivman et gère tous les événements HAL. Je le lance quand je lance ion3 . Je lance simplement ivman en tant que processus démon, mais j'ai ajouté le programme à mon fichier sudoers:

cat /etc/sudoers
[...]
ivman {hostname}=(root) NOPASSWD: /sbin/init, /usr/sbin/hibernate
[...]

afin qu’il puisse également gérer les paramètres d’alimentation.

1
Steen

Ce serait "devkit-disks --mount /dev/sdxx" où xx est la lettre et le numéro de la partition à monter ...

0
Samuel Audet

Je branche mon périphérique USB, tapez "gnome-volume-manager" et cela semble faire tout ce dont vous avez besoin.

0
vinc456

Je ne crois pas que Gnome lui-même gère le montage, c'est HAL. Donc, si HAL est en cours d'exécution, vous devriez pouvoir monter automatiquement. Je suppose que pmount parle d’une manière ou d’une autre à HAL et que ce serait le moyen de procéder au démontage. J'espère que cela vous permet de commencer, au moins.

0
Paul Fisher

Vous pouvez également utiliser gnome-mount pour monter/démonter à partir de la ligne de commande.

0
bluebrother

J'ai un script pour faire ce que tu veux.

#!/bin/bash
#====================================================================
# udmount.sh - mounts partitons by volume label.
#  usage: udmount.sh <label> [rw|ro|u]
#   rw - mount read-only (default) 
#   rw - mount read-write 
#   u  - unmount
# 
# Mounts on /media/<label>. Tested on Mint 13 and Fedora 19.
# Use and/or modify at your own risk. Your mileage may vary.
# Caveats:
#   * No spaces in volume label. Won't work.
#   * If the mount point (/media/<label>) already exists,
#     (usually from an unclean shutdown), udmount will mount
#     the volume on /media/<label>_  
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You can view the GNU General Public License for this program at
# http://www.gnu.org/licenses/gpl.txt
# Copyright 2013 [email protected]
#====================================================================

BEEP=$'\a'
VLABEL="$1"     # volume label
MPOINT="/media" # default mount point for gnome-mount/udisks
YN=""           # yes/no string

c_red() { echo -n $(tput setaf 1)$1$(tput sgr0) ; }
c_grn() { echo -n $(tput setaf 2)$1$(tput sgr0) ; }
c_yel() { echo -n $(tput setaf 3)$1$(tput sgr0) ; }
c_blu() { echo -n $(tput setaf 4)$1$(tput sgr0) ; }
c_pur() { echo -n $(tput setaf 5)$1$(tput sgr0) ; }
c_aqu() { echo -n $(tput setaf 6)$1$(tput sgr0) ; }
c_wht() { echo -n $(tput setaf 7)$1$(tput sgr0) ; }

Y="YEP " ; Y_c=$(c_grn "$Y")
N="NOPE" ; N_c=$(c_red "$N")
SNAME=`echo "$0" | sed -e 's|.*/\(.*\)$|\1|'`

#--------------------------------------------------
AMV_LABEL=""    # already mounted volume label
MMSG=""         # "is mounted on" msg
AMF=0           # already mounted flag
AMV=""          # already mounted volume (from "mount -l")
AMV_DETAILS=""  # already mounted volume details
AMV_HELPER=""   # "uhelper" subsystem for mount/unmount ("hal" or "udisks")
COPT="$2"       # command line option
MOPT="ro"       # user input for mount option
UOPT="ro"       # udisk mount options

#--------------------------------------------------
_usage ()      { echo "usage: $SNAME LABEL [rw|ro|u]" ; }
_error()       { echo "!!! Error: $1. !!!" >&2 ; echo -n "$BEEP"; _usage ; exit 1 ; }
_error_parm()  { _error "$2 Parameter Missing [$1]" ; }
_error_parm2() { _error "Command is wrong (only \"rw, ro, or u\") is alowed, not \"$1\"" ; }

_unmount () {
  ### unmount ###
  if [ "$COPT" = "u" ] ; then
    MPOINT=`echo "$AMV" | grep "\[$VLABEL\]" |sed -e 's|^.* \(/.*\) type.*$|\1|'`
    #echo "unmount MPOINT = [$MPOINT]"
    if [ -z "$MPOINT" ] ; then
      echo "$N_c - $VLABEL not mounted."
    else
      _MSG=`umount "$MPOINT" 2>&1`
      _STATUS=$?
      if [ "$_STATUS" -eq 0 ] ; then
        echo "$Y_c - \"$MPOINT\" is now unmounted"
      else echo "$N_c - unmount \"$MPOINT\" failed ($_MSG)"
      fi
    fi
  fi
}

#--------------------------------------------------
[ -n "$VLABEL" ]  || _error_parm "$VLABEL" "Volume Label"

### command line option checck
case "$COPT" in
  "ro" ) ;;
  "rw" ) ;;
  "u"  ) ;;
     * ) _error_parm2 "$COPT" ;;
esac

### is VLABEL already mounted?
AMV=$(mount -l | grep "\[$VLABEL\]")
AMF=$?

### VLABEL is mounted somewhere
if  [ $AMF -eq 0 ] ; then
  AMV_LABEL=$(echo "$AMV" | sed 's/^.* \[\(.*\)\]$/\1/')
  AMV_DETAILS=$(echo $AMV | sed 's|^.*on \(.*\) \[.*$|on \"\1\"|')
  AMV_UHELPER=$(echo $AMV | grep uhelper | sed 's/^.*uhelper=\(.*\)).*$/\1/')
  #echo "AMV = [$AMV]"
  #echo "AMV_LABEL = [$AMV_LABEL]"
  #echo "AMV_DETAILS = [$AMV_DETAILS]"
  #echo "AMV_UHELPER = [$AMV_UHELPER]"

  ### unmount ###
  [ "$COPT" = "u" ] && _unmount && exit $?

  ### mounted on MPOINT (usually /media)
  if [ -d "$MPOINT/$VLABEL" ] ; then
    MOPT="ro" ; YN="$N_c"
    [ -w "$MPOINT/$VLABEL" ] && MOPT="rw"
    [ "$MOPT" = "$COPT" ]     && YN="$Y_c"
  ### mounted somewhere else
  else
    MOPT=$(echo "$AMV_DETAILS" | sed 's/^.*(\(.*\)).*$/\1/')
  fi
  echo "$N_c - $VLABEL is already mounted \"$MOPT\" $AMV_DETAILS"

### $VLABEL is not mounted anywhere, decide on "rw" or "ro"
else
  if [ "$COPT" = "u" ] ; then
    echo "$N_c - \"$VLABEL\" is not mounted"
  else
    MOPT="ro"
    [ "$COPT" = "rw" ] && MOPT="rw"
    echo "udisks --mount /dev/disk/by-label/$VLABEL $UOPT"
    udisks --mount /dev/disk/by-label/"$VLABEL" --mount-options "$MOPT"
    _STATUS=$?
    [ $_STATUS -eq 0 ] && echo "$Y_c - $MPOINT/$VLABEL mounted ($MOPT)"
    [ $_STATUS -ne 0 ] && echo "$N_c - \"$VLABEL\""
  fi
fi
#====================================================================
0
maxdev137