النوافذ المفتوحة مجلد مشترك من خلال آلة لينكس

StackOverflow https://stackoverflow.com/questions/2419953

  •  19-09-2019
  •  | 
  •  

سؤال

أنا باستخدام بايثون 2.5 على أوبونتو و هناك جهاز في نفس الشبكة يسمى machine1.مجلد مشترك.

كيفية الحصول على الملف في مجلد معين من هذا الجهاز ؟

لقد حاولت مع أي نجاح:

urllib.urlopen('\\machine1\folder\file.txt')
هل كانت مفيدة؟

المحلول

لينكس لديه utiliy يسمى smbmount, التي يمكن العثور عليها في مجموعة smbutils أعتقد.

هذا هو أداة سطر الأوامر التي يتصاعد مشاركة ويندوز إلى دليل على الجهاز المحلي ، اختياريا مع اسم المستخدم/كلمة المرور.

smbmount هو أعتقد الأداة التي يعمل الجذر ، لذلك سواء كان ذلك مناسب لك لا أعرف.ربما أنها يمكن أن تستخدم على النحو المستخدم.

يمكنك إما جبل حصة افتراضيا على آلة لينكس ، وبالتالي الوصول إلى الملفات على أنها من الملفات المحلية أو يمكنك أن تفعل smbmount / smbumount من داخل بيثون السيناريو مع exec أو شيء من هذا القبيل.

mkdir WindowsShare # Do this only once
smbmount \\server\share /home/me/WindowsShare -ousername=...,password=...
ls /home/me/WindowsShare
smbumount /home/me/WindowsShare

اسم المستخدم و كلمة المرور يمكن أن تكون مكتوبة في ملف لبعض الأمن.التحقق رجل الصفحة.

إذا كنت بحاجة إلى شيء تماما الثعبان إلقاء نظرة على pysmb.حيث أن جوجل هي بيثون ، smb ، CIFS.

نصائح أخرى

urllib لا يفهم بروتوكول SMB. سوف تحتاج إلى استخدام gio عبر pygobject من أجل استرداد الملف.

إذا تمت مشاركة المجلد، أعتقد أنه يجب تركيبه في ~ / .gvfs. ربما يمكنك ببساطة استخدام open على الطريق كما تراه في ~ / .gvfs.

يجب أن تبحث عن متصفح الملفات الافتراضي.

ثم يمكنك تنفيذ العملية وتمرير في المجلد الذي تريده كوسيطة (SMB: // Machine1 / المجلد /).

على سبيل المثال على Windows، ستفعل:

execl("explorer.exe", "D:")

حاول البحث عن المسار إلى متصفح الملفات الخاص بك (معظم الوقت هو Nautilus).

لذا:

execl("/bin/nautilus", "smb://.../")

بعض المعلومات حول execl.

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