Skip to main content

Pretty secure file transfer made easy.

Project description

A pretty quick and simple interface to paramiko SFTP. Provides multi-threaded routines with progress notifications for reliable, asynchronous transfers. This is a Python3 optimized fork of pysftp with additional features & improvements.

  • Built-in retry decorator

  • Hash function for integrity checking

  • Improved local & remote directory mapping

  • Improved logging mechanism

  • More tests

  • Multi-threaded directory transfers

  • Progress notifications

  • Support for ciphers, digests, kex & key type connection options

  • Support for ED25519 & ECDSA keys

  • Support for private key passwords

  • Thread-safe connection manager

Example

from sftpretty import Connection


# Basic

with Connection('hostname', username='me', password='secret') as sftp:
    # Temporarily chdir to public/.
    with sftp.cd('public'):
        # Upload file to public/ on remote.
        sftp.put('/my/local/filename')
        # Download a remote file from public/.
        sftp.get('remote_file')


with Connection('hostname', private_key='~/.ssh/id_ed25519',
                            private_key_pass='secret') as sftp:
    # Upload local directory to remote_directory.
    sftp.put_d('/my/local', '/remote_directory')

    # Recursively download a remote_directory and save it to /tmp locally.
    sftp.get_r('remote_directory', '/tmp')


# Advanced

with Connection('hostname', username='me', password='secret') as sftp:
    # Upload local directory to remote_directory. On occurance of any
    # exception or child of, passed in the tuple, retry the operation.
    # Between each attempt increment a pause equal to backoff * delay.
    # Run a total of tries (six) times including the first attempt.
    sftp.put_d('/my/local', '/remote_directory',
               exceptions=(NoValidConnectionsError,
                           socket.timeout,
                           SSHException),
               tries=6, backoff=2, delay=1)


with Connection('hostname', private_key='~/.ssh/id_ed25519',
                            private_key_pass='secret') as sftp:
    # Recursively download a remote_directory and save it to /tmp locally.
    # Don't confirm files, useful in a scenario where the server removes
    # the remote file immediately after download. Preserve remote mtime on
    # local copy
    sftp.get_r('remote_directory', '/tmp', confirm=False,
               preserve_mtime=True)

Additional Information

Requirements

paramiko >= 1.17.0

Supports

Tested on Python 3.6, 3.7, 3.8, 3.9, 3.10 Change Log =========

1.0.1 (current, released 2022-07-22)

  • added key types Connection options for transport

  • bug fixes for close()

  • default to private key authentication

  • enabled timeout setting for channel and transport

  • improved host key logging

  • localtree & remotetree functions windows compatible

  • started hosting on PyPi

  • updated tests and CI pipeline

1.0.0 (released 2021-06-06)

  • added ECDSA and ED25519 key support for authentication

  • added digest and kex Connection options for transport

  • added tests for additional functionality

  • default callback function for progress notifications

  • hash function added to helpers for file verification option

  • improved local and remote directory mapping

  • improved logging capabilities

  • replaced_sftp_connect with context aware channel manager

  • retry decorator for automated recovery from failure

  • switched to using pathlib for all local filepath operations

  • updated documentation and README with advanced examples

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

sftpretty-1.0.2.tar.gz (27.7 kB view hashes)

Uploaded Source

Built Distribution

sftpretty-1.0.2-py3-none-any.whl (16.1 kB view hashes)

Uploaded Python 3

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