安装在任何地方并告诉我

安装在任何地方并告诉我

我想编写一个执行以下操作的脚本:

  • 安装设备(始终是同一个)
  • 查看设备上的文件并告诉我一些相关信息
  • 再次卸载该设备。

这相当容易,但我担心安装点:如果某人(我?)已经在那个点安装了某个东西或者将文件放到了那里,该怎么办?

是否可以告诉脚本类似以下伪代码的内容:

$whereToGo = mount /dev/device --justMountItSomewhereWhereItIsPossibleAndTellMeWhereThatIs
// Do something with $whereToGo/myFile
umount $whereToGo

答案1

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 将创建并使用新的挂载点(可能通过附加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


来自 arch 的信息archwiki 关于 Udisks - 挂载助手

安装助手

使用 udisks 包装器可以轻松实现设备的自动安装。另请参阅应用程序列表#挂载工具

注意:桌面环境(例如 GNOME 和 KDE)也可能提供 udisk 包装器。

相关内容