Сядь куда угодно и расскажи мне об этом

326
Bowi

Я хочу написать скрипт, который делает следующее:

  • Смонтировать устройство (всегда одно и то же)
  • Загляните в файл на устройстве и расскажите мне что-нибудь об этом
  • Размонтируйте устройство снова.

Это довольно просто, но я боюсь точки подключения: что, если кто-то (я?) Уже что-то смонтировал в этой точке или сбросил в нее файлы?

Можно ли сказать сценарию что-то вроде следующего псевдокода:

$whereToGo = mount /dev/device --justMountItSomewhereWhereItIsPossibleAndTellMeWhereThatIs // Do something with $whereToGo/myFile umount $whereToGo 
0
попробуйте создать новую папку, может быть случайная папка и попробуйте смонтировать в этой точке монтирования. OmPS 6 лет назад 0
Почему бы просто не использовать Дисковую / Gnome Disk Utility? Это графический интерфейс и не монтирует вещи поверх других Xen2050 6 лет назад 0
@OmPS: Вы имеете в виду, я должен был бы сделать всю работу (сгенерировать путь, проверить, можно ли использовать путь и повторить, если нет, смонтировать там) сам? Bowi 6 лет назад 0
@ Xen2050: у меня часто нет таких графических интерфейсов, например, при работе только по SSH. Bowi 6 лет назад 0

1 ответ на вопрос

1
Xen2050

Дисковая утилита Gnome использует udisks2, похоже, udisksctlэто инструмент командной строки, она может делать такие вещи, как:

status Shows high-level information about disk drives and block devices.  info Shows detailed information about OBJECT or DEVICE.  mount Mounts a device. The device will be mounted in a subdirectory in the /media hierarchy - upon successful completion, the mount point will be printed to standard output.  The device will be mounted with a safe set of default options. You can influence the options passed to the mount(8) command with --options. Note that only safe options are allowed - requests with inherently unsafe options such as suid or dev that would allow the caller to gain additional privileges, are rejected.  unmount Unmounts a device. This only works if the device is mounted. The option --force can be used to request that the device is unmounted even if active references exists. 

Если точка монтирования уже существует, udksks2 создаст и использует новую точку монтирования (возможно, добавив a 1).

Так что вы должны иметь возможность написать скрипт примерно так (используя в качестве примера / dev / loop5):

$ udisksctl mount --block-device /dev/loop5 Mounted /dev/loop5 at /media/demo/675584e8-d292-4c69-96d6-0fdb720bdf93.  # parse stdout for the mount point, do something with it  $ udisksctl unmount --block-device /dev/loop5 Unmounted /dev/loop5. 

(Можно даже смонтировать только для чтения, добавив --options roв udisksctl mount)


Информация от Archwiki Arch на Udisks - Помощники Горы

Помощники горы

Автоматический монтаж устройств легко достигается с помощью упаковщиков Udisks. Смотрите также Список приложений # Инструменты для монтажа .

Примечание. Среды рабочего стола, такие как GNOME и KDE, также могут предоставлять оболочку для диска.

  • bashmount - скрипт bash для монтирования и управления съемными носителями как обычный пользователь с udisks2.
    https://github.com/jamielinux/bashmount
  • udiskie - автомонтир udisks2 с дополнительными уведомлениями, иконкой в ​​трее и поддержкой защищенных паролем устройств LUKS . Смотрите подробности в вики на udiskie
    https://github.com/coldfix/udiskie
  • udisksvm - оболочка udisks2 с графическим интерфейсом, написанная на Python3 и использующая инфраструктуру Qt5. Он использует щелчки мыши для монтирования, размонтирования съемных устройств или извлечения CD / DVD. Смотрите файл README для деталей.
    https://github.com/berbae/udisksvm
  • udevil - включает devmon, который совместим с udisks и udisks2. https://github.com/IgnorantGuru/udevil
Было бы здорово, но у меня нет этого инструмента. Bowi 6 лет назад 0
@Bowi just install it, the package is in Debian, Arch, Gentoo, probably available for every Linux distribution. The [archwiki on Udisks](https://wiki.archlinux.org/index.php/udisks) suggests some helper scripts that might be worth a look too, I'll edit them into the answer. Xen2050 6 лет назад 1

Похожие вопросы