Frage

Ich versuche, einen einfachen Befehlszeilen -Client für den Zugriff auf Aktien über die Python -Bindungen von GIO zu erstellen (ja, die Hauptanforderung besteht darin, GIO zu verwenden).

Ich kann sehen, dass es im Vergleich zum Vorgänger GNOME-VFS einige Mittel bietet, um Authentifizierungsmaterial zu machen (Unterklasse MountOperation) und sogar einige Methoden, die für Samba -Aktien ganz spezifisch sind, wie set_domain().

Aber ich bin mit diesem Code festgefahren:

import gio

fh = gio.File("smb://server_name/")

Wenn dieser Server eine Authentifizierung benötigt, nehme ich an, dass ein Aufruf zu fh.mount_enclosing_volume() wird benötigt, da diese Methoden a dauert MountOperation als Parameter. Das Problem ist, dass das Aufrufen dieser Methoden nichts und die Logische tut fh.enumerate_children() (Um die verfügbaren Aktien aufzulisten), die als nächstes kommen, schlägt fehl.

Könnte jemand ein funktionierendes Beispiel dafür geben, wie dies mit GIO gemacht werden würde?

War es hilfreich?

Lösung

Das Folgende scheint der Mindestcode zu sein, der für ein Volumen benötigt wird:

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)

(Abgeleitet von GVFS-Mount.)

Darüber hinaus benötigen Sie möglicherweise einen Glib. Weitere Informationen finden Sie im GVFS-Mount-Quellcode.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top