如何使用 Python3 和 Udisks2 以只读方式挂载设备?
How to mount a device read-only with Python3 and Udisks2?
我需要(临时)使用 Python3 和 Udisks2 API 以只读方式安装设备。正确的 GLib.Variant 是多少?
我创建了以下脚本来使用 USB 笔式驱动器进行测试。它假定 /dev/sdc1 作为此设备。
#! /usr/bin/env python3
MYDEVICE = '/dev/sdc1'
import gi
gi.require_version('UDisks', '2.0')
from gi.repository import UDisks, GLib
read_only = GLib.Variant('a{sv}', {'read-only': GLib.Variant('b', True)})
client = UDisks.Client.new_sync(None)
manager = client.get_object_manager()
for obj in manager.get_objects():
block = obj.get_block()
if not block: continue
device_path = block.get_cached_property("Device").get_bytestring().decode('utf-8')
if device_path == MYDEVICE:
fs = obj.get_filesystem()
mount_points = fs.call_mount_sync(read_only, None)
print((mount_points))
这将挂载设备,但它不是以只读方式挂载的。
我原以为它会将设备挂载为只读,或者如果只读选项无效,至少会抛出一个错误。
使用 GLib.Variant('a{sv}', {'options': GLib.Variant('s', 'ro')})
将标准 ro
选项传递给 mount
。
我需要(临时)使用 Python3 和 Udisks2 API 以只读方式安装设备。正确的 GLib.Variant 是多少?
我创建了以下脚本来使用 USB 笔式驱动器进行测试。它假定 /dev/sdc1 作为此设备。
#! /usr/bin/env python3
MYDEVICE = '/dev/sdc1'
import gi
gi.require_version('UDisks', '2.0')
from gi.repository import UDisks, GLib
read_only = GLib.Variant('a{sv}', {'read-only': GLib.Variant('b', True)})
client = UDisks.Client.new_sync(None)
manager = client.get_object_manager()
for obj in manager.get_objects():
block = obj.get_block()
if not block: continue
device_path = block.get_cached_property("Device").get_bytestring().decode('utf-8')
if device_path == MYDEVICE:
fs = obj.get_filesystem()
mount_points = fs.call_mount_sync(read_only, None)
print((mount_points))
这将挂载设备,但它不是以只读方式挂载的。
我原以为它会将设备挂载为只读,或者如果只读选项无效,至少会抛出一个错误。
使用 GLib.Variant('a{sv}', {'options': GLib.Variant('s', 'ro')})
将标准 ro
选项传递给 mount
。