udisksctl
é chamado pelas regras do udev, que então monta o devide na mídia como usuário na pasta /media/$USER/diskname
.
Para todos os efeitos práticos, é suficiente que você faça manualmente udisksctl mount -b / dev / sdb1
Lembre-se de substituir seu dispositivo pelo nome real
Como na sua pergunta você também pediu uma solução de distribuição cruzada, sua melhor solução é o comando mount
, no entanto, abaixo está um script onde eu basicamente emulei o comando udisksctl
. Ele criará o diretório onde ele é montado e deve funcionar em qualquer distribuição, desde que haja blkid
, mount
e awk
disponíveis.
Salve o código-fonte em mountStuff.sh
, torne-o executável com chmod +x /path/to/mountStuff.sh
. Para evitar a execução constante do script a partir do caminho completo, é aconselhável armazená-lo em um diretório que faça parte de sua variável $PATH
Executar como assim:
skolodya@ubuntu:$ sudo ./mountStuff.sh /dev/sdb5
[sudo] password for xieerqi:
Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625
#!/usr/bin/env bash
# Author: Serg Kolo
# Date: January 23, 2016
# Script Description: Helper script that
# emulates behavior of udisksctl; reads blkid
# and creates a directory where to mount, based
# on disk label or uuid
#
#
# Copyright Sergiy Kolodyazhnyy 2016
#
# Permission to use, copy, modify, and distribute this software is hereby granted
# without fee, provided that the copyright notice above and this permission statement
# appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
if [ "$(id -u)" -ne 0 ];then
printf ">>> ERR:Must be root"
exit 1
fi
if [ -z "$1" ]; then
printf ">>> ERR: Must have a parameter, e.g. /dev/sdb1"
exit 1
fi
if [ "${1%/*}" != "/dev" ];then
printf ">>> ERR: Wrong parameter; Must be a device file"
exit 1
fi
# split output of blkid into array;
# Element 0 is device, element 1 is LABEL or UUID, element 2 is filesystem
ARRAY=($( blkid | awk -v DEV="$1" '$0~DEV{ gsub(/\"/,"");gsub(/\=/," "); print $1,$3,$NF }' ))
# the username who ran script as sudo given in $SUDO_USER
if [ ! -d "/media/$SUDO_USER/${ARRAY[1]}" ];
then
mkdir "/media/$SUDO_USER/${ARRAY[1]}"
fi
mount -t "${ARRAY[2]}" -o rw,user "$1" "/media/$SUDO_USER/${ARRAY[1]}"
if [ "$?" -eq "0" ]; then
printf "Mounted %s at %s" "$1" "/media/$SUDO_USER/${ARRAY[1]}"
fi
skolodya@ubuntu:$ sudo ./mountStuff.sh /dev/sdb5
[sudo] password for xieerqi:
Mounted /dev/sdb5 at /media/xieerqi/0ca7543a-5463-4a07-8bbe-233a7b0bd625