2011-04-08 25 views

Respuesta

1

¿Por qué no montar la información compartida relacionada con el comando

NET USE 

?

Llamar a NET USE desde el módulo de subproceso es sencillo.

+0

tiene usted razón! Solución realmente fácil y funciona bien. – Rafal

6

Usando pywin32 (Python para Extensiones de Windows), acceda a los métodos de redes de Windows en el módulo win32wnet. El método win32wnet.WNetAddConnection2() le permite especificar el nombre de usuario y la contraseña.

WNetAddConnection2(NetResource, Password, UserName, Flags) 

crea una conexión a un recurso de red. La función puede redirigir un dispositivo local al recurso de red.

Después de que la conexión esté activa, acceda al recurso compartido utilizando el directorio normal y los métodos de archivo.

+1

Un ejemplo de definición de NetResource: 'NetResource = win32wnet.NETRESOURCE()' 'NetResource.lpRemoteName = r '\\ 10.0.0.1 \ share'' –

6

Ejemplo completo de "NET USE":

backup_storage_available = os.path.isdir(BACKUP_REPOSITORY_PATH) 

if backup_storage_available: 
    logger.info("Backup storage already connected.") 
else: 
    logger.info("Connecting to backup storage.") 

    mount_command = "net use /user:" + BACKUP_REPOSITORY_USER_NAME + " " + BACKUP_REPOSITORY_PATH + " " + BACKUP_REPOSITORY_USER_PASSWORD 
    os.system(mount_command) 
    backup_storage_available = os.path.isdir(BACKUP_REPOSITORY_PATH) 

    if backup_storage_available: 
     logger.fine("Connection success.") 
    else: 
     raise Exception("Failed to find storage directory.") 
Cuestiones relacionadas