النوافذ المفتوحة مجلد مشترك من خلال آلة لينكس
سؤال
أنا باستخدام بايثون 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.