سؤال

أحاول إنشاء عميل سطر أوامر بسيط للوصول إلى الأسهم عبر روابط Python لـ GIO (نعم ، المطلب الرئيسي هو استخدام GIO).

أستطيع أن أرى أن المقارنة مع سابقتها GNOME-VFS ، فهي توفر بعض الوسائل للقيام بأشياء المصادقة (التصنيف الفرعي 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-MOUNT.)

بالإضافة إلى ذلك ، قد تحتاج إلى تشغيل glib.mainloop لأن وظائف تركيب GIO غير متزامنة. راجع رمز مصدر GVFS-Mount للحصول على التفاصيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top