Откройте совместно используемую папку Windows через машину Linux

Я использую python 2.5 на Ubuntu, и в той же названной сети существует машина machine1. Папка совместно используется.

Как к получить файл в определенной папке той машины?

Я попробовал без успеха:

urllib.urlopen('\\machine1\folder\file.txt')
5
задан Arthur Thomas 1 November 2017 в 18:45
поделиться

4 ответа

В Linux есть утилита под названием smbmount , которую, как мне кажется, можно найти в пакете smbutils.

Это утилита командной строки, которая монтирует общий ресурс Windows в каталог на локальном компьютере, необязательно с именем пользователя / паролем.

smbmount - это, как мне кажется, утилита, работающая от имени пользователя root, поэтому я не знаю, подходит ли она вам. Может быть, его можно использовать как пользователь.

Вы можете либо смонтировать общий ресурс по умолчанию на машине Linux, получая доступ к файлам на нем как локальным файлам, либо вы можете выполнить smbmount / smbumount из сценария python с помощью exec или чего-то подобного.

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

Имя пользователя и пароль могут быть записаны в файл для некоторой безопасности. См. Справочную страницу .

Если вам нужно что-то полностью на Python, посмотрите pysmb . В Google используются следующие термины: python, smb, CIFS.

6
ответ дан 14 December 2019 в 08:48
поделиться

urllib не понимает протокол SMB. Вам нужно будет использовать gio через pygobject, чтобы получить файл.

2
ответ дан 14 December 2019 в 08:48
поделиться

Вам следует искать файловый браузер по умолчанию.

Затем вы можете выполнить процесс и передать нужную папку в качестве аргумента (smb: // machine1 / folder /).

Например, в Windows вы бы сделали:

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

Попробуйте найти путь к вашему файловому браузеру (в большинстве случаев это Nautilus).

Итак:

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

Некоторая информация о execl

-1
ответ дан 14 December 2019 в 08:48
поделиться

Если папка является общей, я думаю, ее следует смонтировать в ~ / .gvfs. Возможно, вы можете просто использовать open в пути, как вы видите его в ~ / .gvfs.

0
ответ дан 14 December 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: