Skip to main content

Accessing Windows from Linux

Project description

Accessing Windows from Linux

pypi version Build status Coverage Code style: black Number of tests Number of downloads

Retrieve a file (from Windows to Linux)

import pyndows

path_to_retrieved_file = ""
with pyndows.connect(...) as machine:
    pyndows.get(machine, "shared_folder_name", "/folder/requested_file_name", path_to_retrieved_file)

Retrieve a file description (from Windows to Linux)

import pyndows

with pyndows.connect(...) as machine:
    description = pyndows.get_file_desc(machine, "shared_folder_name", "/folder/requested_file_name")

Move a file (from Linux to Windows)

import pyndows

file_to_move_path = ""
with pyndows.connect(...) as machine:
    pyndows.move(machine, "shared_folder_name", "/folder/destination_file_name", file_to_move_path)

Note that folders will be created if not existing.

You can also provide a custom suffix for the temporary file (.tmp is used by default) via the temp_file_suffix parameter.

Rename a file

import pyndows

with pyndows.connect(...) as machine:
    pyndows.rename(machine, "shared_folder_name", "/folder/previous_file_name", "/folder/new_file_name")

Ensure connectivity

import pyndows

with pyndows.connect(...) as machine:
    details = pyndows.check("connection identifier", machine)

Testing

You can mock remote connections by using samba_mock pytest fixture.

2 convenience methods are available:

  1. samba_mock.path(share_folder_name, file_or_folder_path) returns a pathlib.Path instance that you can use as a replacement for the file on the remote connection.
    • Use write_*() to set the content of a file.
    • Use read_*() to check the content of a file.
  2. samba_mock.add_callback(method_name, callback) provides the ability to override the mock default behavior and can be used to send custom exceptions.

Below are a few example of what can be done:

Simulate a file that can be retrieved

from pyndows.testing import samba_mock, SMBConnectionMock

def test_file_retrieval(samba_mock: SMBConnectionMock):
    samba_mock.path("shared_folder_name", "/folder/file_to_retrieve").write_text("File content of path to a file")
    # TODO Execute code relying on this file

Ensure the content of a file that was moved or renamed

from pyndows.testing import samba_mock, SMBConnectionMock

def test_file_retrieval(samba_mock: SMBConnectionMock):
    # TODO Execute code writing this file
    file_content = samba_mock.path("shared_folder_name", "/folder/file_that_was_stored").read_text()

Simulate echo failure

from smb.smb_structs import OperationFailure
from pyndows.testing import samba_mock, SMBConnectionMock

def test_file_retrieval(samba_mock: SMBConnectionMock):
    def raise_exception(*args):
        raise OperationFailure("Mock for echo failure.", [])

    samba_mock.add_callback("echo", raise_exception)
    # TODO Execute code calling echo

How to install

  1. python 3.6+ must be installed
  2. Use pip to install module:
python -m pip install pyndows

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyndows-4.1.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

pyndows-4.1.0-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file pyndows-4.1.0.tar.gz.

File metadata

  • Download URL: pyndows-4.1.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.1

File hashes

Hashes for pyndows-4.1.0.tar.gz
Algorithm Hash digest
SHA256 08a40a6cb59cb202823ce48d3886240e9be42650579f9bd04a88ac852c03b7ae
MD5 7dacb47e679f5ada834fbec06c2b2dc7
BLAKE2b-256 35a1d5139b4c1a90eadcbc66d11985e6cca29c1bfaa2ca8152b60fe90840fb6f

See more details on using hashes here.

Provenance

File details

Details for the file pyndows-4.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyndows-4.1.0-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.48.0 CPython/3.7.1

File hashes

Hashes for pyndows-4.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f39ce9a44ebc776136f85c103b45b7d260d1e8213d17f1a9565d3386c34cf9c5
MD5 beca37bc6f854f0d237adc1696ff6f36
BLAKE2b-256 46672a52c91e472a03741635da0c82ac04ebbb7cf7c713a4063fbc5e6294df83

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page