Abra la carpeta compartida de Windows a través de la máquina Linux
Pregunta
Estoy usando Python 2.5 en Ubuntu, y hay una máquina en la misma red llamada machine1
. La carpeta es compartida.
¿Cómo obtener un archivo en una carpeta específica de esa máquina?
Lo he intentado, sin éxito:
urllib.urlopen('\\machine1\folder\file.txt')
Solución
Linux tiene una utilidad llamada smbmount
, que se puede encontrar en el paquete smbutils, creo.
Esta es una utilidad de línea de comandos que monta una compartir Windows en un directorio en la máquina local, opcionalmente con nombre de usuario/contraseña.
SMBmount es creo que una utilidad se ejecuta como raíz, por lo que si es adecuado para ti, no lo sé. Tal vez se pueda usar como usuario.
Puede montar la compartir de forma predeterminada en la máquina Linux, accediendo así a los archivos en él como archivos locales, o puede hacer el SMBMount / SmbuMount dentro del script de Python con Exec o algo así.
mkdir WindowsShare # Do this only once
smbmount \\server\share /home/me/WindowsShare -ousername=...,password=...
ls /home/me/WindowsShare
smbumount /home/me/WindowsShare
El nombre de usuario y la contraseña se pueden escribir en un archivo para alguna seguridad. Comprobar el página del hombre.
Si necesitas algo totalmente Python, eche un vistazo a pysmb. Los términos para Google son Python, SMB, CIFS.
Otros consejos
urllib
no entiende el protocolo SMB. Necesitarás usar gio
a través de pygobject para recuperar el archivo.
Si se comparte la carpeta, creo que debe montarse en ~/.gvfs. Quizás simplemente puedas usar open
en el camino como lo ves en ~/.gvfs.
Debe buscar el navegador de archivo predeterminado.
Y luego puede ejecutar el proceso y pasar en la carpeta que desee como argumento (smb: // máquina1/carpeta/).
Por ejemplo, en Windows lo haría:
execl("explorer.exe", "D:")
Intente buscar la ruta en su navegador de archivos (la mayoría de las veces es Nautilus).
Asi que:
execl("/bin/nautilus", "smb://.../")
Alguna información sobre execl