Я пытаюсь сделать простой клиент командной строки для доступа к долям через привязку Python gio (да, основное требование состоит в том, чтобы использовать gio).
Я вижу, что сравнение с он - гном-vfs-предшественник, это обеспечивает некоторые средства сделать материал аутентификации (разделение на подклассы MountOperation
), и даже некоторые методы, которые довольно характерны для долей самбы, как set_domain()
.
Но я застреваю с этим кодом:
import gio
fh = gio.File("smb://server_name/")
Если тому серверу нужна аутентификация, я предполагаю что вызов к fh.mount_enclosing_volume()
необходим, как это, методы берут a MountOperation
в качестве параметра. Проблема состоит в том, что вызов этого методы не делает ничего и логического fh.enumerate_children()
(для списка доступных долей), который прибывает следующие сбои.
Кто-либо мог обеспечить рабочий пример того, как это будет сделано с gio?
Следующее, по-видимому, является минимальным кодом, необходимым для монтажа громкости:
def mount(f):
op = gio.MountOperation()
op.connect('ask-password', ask_password_cb)
f.mount_enclosing_volume(op, mount_done_cb)
def ask_password_cb(op, message, default_user, default_domain, flags):
op.set_username(USERNAME)
op.set_domain(DOMAIN)
op.set_password(PASSWORD)
op.reply(gio.MOUNT_OPERATION_HANDLED)
def mount_done_cb(obj, res):
obj.mount_enclosing_volume_finish(res)
(получено из GVFS-Mount .)
Кроме того, вам может понадобиться GLIB.MainLoop Функции монтирования асинхронные. См. Исходный код GVFS-монтажа для деталей.