Как запустить автомат из командной строки? Под «automount» я не имею в виду полностью автоматический монтаж, но получаю список доступных устройств, а затем выбираю один и заканчивая как /media/{user}/{diskid}. Эта функция предоставляется, например, Nautilus или Thunar, но я не могу найти инструмент командной строки для запуска такого полуавтоматического монтирования.
pmount является самым близким, который я нашел, но кажется, работает совершенно другой механикой внизу и делает устройства отображаться как /media/sdf или что-то в этом роде.
Вы можете использовать:
udisks --mount device_nameили
udisksctl mount -b device_name, где device_name - имя запоминающего устройства и должно выглядеть примерно как /dev/sdb1.
Используя команду sudo fdisk -l, вы можете узнать все устройства хранения, подключенные к вашей системе.
Простое решение, которое работает по мере необходимости (монтируется в / media / {user} / {diskid}), за исключением того, что он не может перечислить устройства, но ему необходимо указать точную метку томов, чувствительную к регистру, в качестве аргумента $ 1 [!d0 ]
Для монтирования:
DEVICE=$(findfs LABEL=$1) && udisksctl mount -b $DEVICE
Чтобы установить :
DEVICE=$(findfs LABEL=$1) && udisksctl unmount -b $DEVICE
Я написал этот скрипт Bash, чтобы обойти эту проблему, но имейте в виду, что я новичок в скриптах. Все предложения приветствуются! Использование и описание следуют ниже сценария.
#!/bin/bash
# umanage.sh
# 2014-05-05
BASEPATH="/media/$(whoami)/"
RESULTS=$(udisksctl dump | grep IdLabel | grep -c -i "$1")
case "$RESULTS" in
0 ) echo "Nothing found."
;;
1 ) DEVICELABEL=$(udisksctl dump | grep IdLabel | grep -i "$1" | cut -d ":" -f 2 | sed 's/^[ \t]*//')
DEVICE=$(udisksctl dump | grep -i "IdLabel: \+$DEVICELABEL" -B 12 | grep " Device:" | cut -d ":" -f 2 | sed 's/^[ \t]*//')
DEVICEPATH="$BASEPATH""$DEVICELABEL"
if [[ -z $(mount | grep "$DEVICE") ]]
then
echo "Found unmounted $DEVICE partition."
echo "Do you want to mount it in $DEVICEPATH?"
select yn in "Mount" "Ignore"
do
case $yn in
Mount ) udisksctl mount -b "$DEVICE"
break
;;
Ignore ) exit
;;
esac
done
else
echo "Found $DEVICE partition, currently mounted in $DEVICEPATH."
echo "Do you want to unmount it?"
select yn in "Unmount" "Ignore"
do
case $yn in
Unmount ) udisksctl unmount -b "$DEVICE"
break
;;
Ignore ) exit
;;
esac
done
fi
;;
* ) if [ $# -eq 0 ]
then
echo "No argument supplied"
else
echo "$RESULTS possible results. You may be looking for:"
echo
udisksctl dump | grep IdLabel | grep -i "$1" | cut -d ":" -f 2 | sed 's/^[ \t]*//' | sed '/^$/d'
echo
echo "Please refine your search."
fi
;;
esac
Использование:
сохранить сценарий как umanage.sh сделать его исполняемым: chmod + x umanage.sh запустить его: ./umanage .sh YourDeviceLabelСценарий принимает в качестве аргумента метку раздела, который вы хотите монтировать, и просматривает дамп udisksctl для соответствующих записей.
Если раздел найден и он не установлен, отображаются имя и путь устройства, и вам предлагается установить раздел. Сценарий также ищет частичные ярлыки, и он не заботится о верхнем или нижнем регистре (полезно, когда вы не помните точную метку).
./umanage.sh PASSPORT
Found unmounted /dev/sdf1 partition.
Do you want to mount it in /media/pixel/My Passport?
1) Mount
2) Ignore
#?
Если раздел найден и он уже установлен, вам предлагается отключить его:
./umanage.sh passp
Found /dev/sdf1 partition, currently mounted in /media/open/My Passport.
Do you want to unmount it?
1) Unmount
2) Ignore
#?
Если ваш аргумент соответствует более чем результату, сценарий показывает вы сопоставляете метки разделов и попросите уточнить поиск:
./umanage.sh SS
2 possible results. You may be looking for:
SSD-9GB
My Passport
Please refine your search.