与Python的Gio访问Samba股份
-
22-09-2019 - |
题
我正在尝试制作一个简单的命令行客户端,以通过GIO的Python绑定访问共享(是的,主要要求是使用GIO)。
我可以看到,与它的前身GNOME-VF进行比较,它提供了一些进行认证的方法(子类别 MountOperation
),甚至是一些针对桑巴股票的方法,例如 set_domain()
.
但是我坚持此代码:
import gio
fh = gio.File("smb://server_name/")
如果该服务器需要身份验证,我想 fh.mount_enclosing_volume()
需要,因为这种方法采用 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安装.)
此外,您可能需要一个glib.mainloop运行,因为Gio安装函数是异步的。有关详细信息,请参见GVFS安装源代码。
不隶属于 StackOverflow