Skip to main content

Asynchronous parallel SSH library

Project description

Asynchronous parallel SSH client library.

Run SSH commands over many - hundreds/hundreds of thousands - number of servers asynchronously and with minimal system load on the client host.

Native code based client with extremely high performance - based on libssh2 C library.

License Latest Version https://travis-ci.org/ParallelSSH/parallel-ssh.svg?branch=master https://ci.appveyor.com/api/projects/status/github/parallelssh/parallel-ssh?svg=true&branch=master https://codecov.io/gh/ParallelSSH/parallel-ssh/branch/master/graph/badge.svg https://img.shields.io/pypi/wheel/parallel-ssh.svg Latest documentation

Installation

pip install parallel-ssh

Usage Example

See documentation on read the docs for more complete examples.

Run uname on two remote hosts in parallel with sudo.

from __future__ import print_function

from pssh.clients import ParallelSSHClient

hosts = ['myhost1', 'myhost2']
client = ParallelSSHClient(hosts)

output = client.run_command('uname')
for host, host_output in output.items():
    for line in host_output.stdout:
        print(line)
Output:
Linux
Linux

Native client

Starting from version 1.2.0, a new client is supported in parallel-ssh which offers much greater performance and reduced overhead than the current default client.

The new client is based on libssh2 via the ssh2-python extension library and supports non-blocking mode natively. Binary wheel packages with libssh2 included are provided for Linux, OSX and Windows platforms and all supported Python versions.

See this post for a performance comparison of the available clients.

To make use of this new client, ParallelSSHClient can be imported from pssh.clients.native instead. Their respective APIs are almost identical.

The new client will become the default and will replace the current pssh.pssh_client in a new major version of the library - 2.0.0.

The paramiko based client will become an optional install via pip extras, available under pssh.clients.miko.

For example:

from pprint import pprint
from pssh.clients.native import ParallelSSHClient

hosts = ['myhost1', 'myhost2']
client = ParallelSSHClient(hosts)

output = client.run_command('uname')
for host, host_output in output.items():
    for line in host_output.stdout:
        print(line)

See documentation for a feature comparison of the two clients.

Native Code Client Features

  • Highest performance and least overhead of any Python SSH libraries

  • Thread safe - makes use of native threads for blocking calls like authentication

  • Natively non-blocking utilising libssh2 via ssh2-python - no monkey patching of the Python standard library

  • Significantly reduced overhead in CPU and memory usage

Exit codes

Once either standard output is iterated on to completion, or client.join(output) is called, exit codes become available in host output. Iteration ends only when remote command has completed, though it may be interrupted and resumed at any point.

for host in output:
    print(output[host].exit_code)
Output:
0
0

The client’s join function can be used to wait for all commands in output object to finish:

client.join(output)

Similarly, output and exit codes are available after client.join is called:

from pprint import pprint

output = client.run_command('exit 0')

# Wait for commands to complete and gather exit codes.
# Output is updated in-place.
client.join(output)
pprint(output.values()[0].exit_code)

# Output remains available in output generators
for host, host_output in output.items():
    for line in host_output.stdout:
        pprint(line)
Output:
0
<..stdout..>

There is also a built in host logger that can be enabled to log output from remote hosts. The helper function pssh.utils.enable_host_logger will enable host logging to stdout.

To log output without having to iterate over output generators, the consume_output flag must be enabled - for example:

from pssh.utils import enable_host_logger

enable_host_logger()
client.join(client.run_command('uname'), consume_output=True)
Output:
[localhost]       Linux

SFTP

SFTP is supported natively.

To copy a local file to remote hosts in parallel:

from pssh.clients import ParallelSSHClient
from pssh.utils import enable_logger, logger
from gevent import joinall

enable_logger(logger)
hosts = ['myhost1', 'myhost2']
client = ParallelSSHClient(hosts)
cmds = client.copy_file('../test', 'test_dir/test')
joinall(cmds, raise_error=True)
Output:
Copied local file ../test to remote destination myhost1:test_dir/test
Copied local file ../test to remote destination myhost2:test_dir/test

There is similar capability to copy remote files to local ones suffixed with the host’s name with the copy_remote_file function.

Directory recursion is supported in both cases via the recurse parameter - defaults to off.

See SFTP documentation for more examples.

Design And Goals

parallel-ssh’s design goals and motivation are to provide a library for running non-blocking asynchronous SSH commands in parallel with little to no load induced on the system by doing so with the intended usage being completely programmatic and non-interactive.

To meet these goals, API driven solutions are preferred first and foremost. This frees up developers to drive the library via any method desired, be that environment variables, CI driven tasks, command line tools, existing OpenSSH or new configuration files, from within an application et al.

Comparison With Alternatives

There are not many alternatives for SSH libraries in Python. Of the few that do exist, here is how they compare with parallel-ssh.

As always, it is best to use a tool that is suited to the task at hand. parallel-ssh is a library for programmatic and non-interactive use - see Design And Goals. If requirements do not match what it provides then it best not be used. Same applies for the tools described below.

Paramiko

The default SSH client library in parallel-ssh 1.x.x series.

Pure Python code, while having native extensions as dependencies, with poor performance and numerous bugs compared to both OpenSSH binaries and the libssh2 based native clients in parallel-ssh 1.2.x and above. Recent versions have regressed in performance and have blocker issues.

It does not support non-blocking mode, so to make it non-blocking monkey patching must be used which affects all other uses of the Python standard library. However, some functionality like Kerberos (GSS-API) authentication is not provided by other libraries.

asyncssh

Python 3 only asyncio framework using client library. License (EPL) is not compatible with GPL, BSD or other open source licenses and combined works cannot be distributed.

Therefore unsuitable for use in many projects, including parallel-ssh.

Fabric

Port of Capistrano from Ruby to Python. Intended for command line use and is heavily systems administration oriented rather than non-interactive library. Same maintainer as Paramiko.

Uses Paramiko and suffers from the same limitations. More over, uses threads for parallelisation, while not being thread safe, and exhibits very poor performance and extremely high CPU usage even for limited number of hosts - 1 to 10 - with scaling limited to one core.

Library API is non-standard, poorly documented and with numerous issues as API use is not intended.

Ansible

A configuration management and automation tool that makes use of SSH remote commands. Uses, in parts, both Paramiko and OpenSSH binaries.

Similarly to Fabric, uses threads for parallelisation and suffers from the poor scaling that this model offers.

See The State of Python SSH Libraries for what to expect from scaling SSH with threads, as compared to non-blocking I/O with parallel-ssh.

Again similar to Fabric, its intended and documented use is interactive via command line rather than library API based. It may, however, be an option if Ansible is already being used for automation purposes with existing playbooks, the number of hosts is small, and when the use case is interactive via command line.

parallel-ssh is, on the other hand, a suitable option for Ansible as an SSH client that would improve its parallel SSH performance significantly.

ssh2-python

Wrapper to libssh2 C library. Used by parallel-ssh as of 1.2.0 and is by same author.

Does not do parallelisation out of the box but can be made parallel via Python’s threading library relatively easily and as it is a wrapper to a native library that releases Python’s GIL, can scale to multiple cores.

parallel-ssh uses ssh2-python in its native non-blocking mode with event loop and co-operative sockets provided by gevent for an extremely high performance library without the side-effects of monkey patching - see benchmarks.

In addition, parallel-ssh uses native threads to offload CPU blocked tasks like authentication in order to scale to multiple cores while still remaining non-blocking for network I/O.

pssh.clients.native.SSHClient is a single host natively non-blocking client for users that do not need parallel capabilities but still want a non-blocking client with native code performance.

Out of all the available Python SSH libraries, libssh2 and ssh2-python have been shown, see benchmarks above, to perform the best with the least resource utilisation and ironically for a native code extension the least amount of dependencies. Only libssh2 C library and its dependencies which are included in binary wheels.

However, it lacks support for some SSH features present elsewhere like ECDSA keys (PR pending), agent forwarding (PR also pending) and Kerberos authentication - see feature comparison.

Scaling

Some guide lines on scaling parallel-ssh and pool size numbers.

In general, long lived commands with little or no output gathering will scale better. Pool sizes in the multiple thousands have been used successfully with little CPU overhead in the single thread running them in these use cases.

Conversely, many short lived commands with output gathering will not scale as well. In this use case, smaller pool sizes in the hundreds are likely to perform better with regards to CPU overhead in the event loop.

Multiple Python native threads, each of which can get its own event loop, may be used to scale this use case further as number of CPU cores allows. Note that parallel-ssh imports must be done within the target function of the newly started thread for it to receive its own event loop. gevent.get_hub() may be used to confirm that the worker thread event loop differs from the main thread.

Gathering is highlighted here as output generation does not affect scaling. Only when output is gathered either over multiple still running commands, or while more commands are being triggered, is overhead increased.

Technical Details

To understand why this is, consider that in co-operative multi tasking, which is being used in this project via the gevent library, a co-routine (greenlet) needs to yield the event loop to allow others to execute - co-operation. When one co-routine is constantly grabbing the event loop in order to gather output, or when co-routines are constantly trying to start new short-lived commands, it causes contention with other co-routines that also want to use the event loop.

This manifests itself as increased CPU usage in the process running the event loop and reduced performance with regards to scaling improvements from increasing pool size.

On the other end of the spectrum, long lived remote commands that generate no output only need the event loop at the start, when they are establishing connections, and at the end, when they are finished and need to gather exit codes, which results in practically zero CPU overhead at any time other than start or end of command execution.

Output generation is done remotely and has no effect on the event loop until output is gathered - output buffers are iterated on. Only at that point does the event loop need to be held.

User’s group

There is a public ParallelSSH Google group setup for this purpose - both posting and viewing are open to the public.

https://ga-beacon.appspot.com/UA-9132694-7/parallel-ssh/README.rst?pixel

Release history Release notifications | RSS feed

This version

1.8.2

Download files

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

Source Distribution

parallel-ssh-1.8.2.tar.gz (102.3 kB view details)

Uploaded Source

Built Distributions

parallel_ssh-1.8.2-cp37-cp37m-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.7m Windows x86-64

parallel_ssh-1.8.2-cp37-cp37m-win32.whl (1.0 MB view details)

Uploaded CPython 3.7m Windows x86

parallel_ssh-1.8.2-cp37-cp37m-manylinux1_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.7m

parallel_ssh-1.8.2-cp37-cp37m-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.7m macOS 10.13+ x86-64

parallel_ssh-1.8.2-cp37-cp37m-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.7m macOS 10.12+ x86-64

parallel_ssh-1.8.2-cp37-cp37m-macosx_10_11_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.7m macOS 10.11+ x86-64

parallel_ssh-1.8.2-cp37-cp37m-macosx_10_10_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.7m macOS 10.10+ x86-64

parallel_ssh-1.8.2-cp36-cp36m-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.6m Windows x86-64

parallel_ssh-1.8.2-cp36-cp36m-win32.whl (1.0 MB view details)

Uploaded CPython 3.6m Windows x86

parallel_ssh-1.8.2-cp36-cp36m-manylinux1_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.6m

parallel_ssh-1.8.2-cp36-cp36m-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.6m macOS 10.13+ x86-64

parallel_ssh-1.8.2-cp36-cp36m-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.6m macOS 10.12+ x86-64

parallel_ssh-1.8.2-cp36-cp36m-macosx_10_11_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.6m macOS 10.11+ x86-64

parallel_ssh-1.8.2-cp36-cp36m-macosx_10_10_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.6m macOS 10.10+ x86-64

parallel_ssh-1.8.2-cp35-cp35m-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.5m Windows x86-64

parallel_ssh-1.8.2-cp35-cp35m-win32.whl (1.0 MB view details)

Uploaded CPython 3.5m Windows x86

parallel_ssh-1.8.2-cp35-cp35m-manylinux1_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.5m

parallel_ssh-1.8.2-cp34-cp34m-win_amd64.whl (1.4 MB view details)

Uploaded CPython 3.4m Windows x86-64

parallel_ssh-1.8.2-cp34-cp34m-win32.whl (1.0 MB view details)

Uploaded CPython 3.4m Windows x86

parallel_ssh-1.8.2-cp34-cp34m-manylinux1_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.4m

parallel_ssh-1.8.2-cp27-cp27mu-manylinux1_x86_64.whl (1.6 MB view details)

Uploaded CPython 2.7mu

parallel_ssh-1.8.2-cp27-cp27m-win_amd64.whl (1.4 MB view details)

Uploaded CPython 2.7m Windows x86-64

parallel_ssh-1.8.2-cp27-cp27m-win32.whl (1.0 MB view details)

Uploaded CPython 2.7m Windows x86

parallel_ssh-1.8.2-cp27-cp27m-manylinux1_x86_64.whl (1.6 MB view details)

Uploaded CPython 2.7m

parallel_ssh-1.8.2-cp27-cp27m-macosx_10_13_x86_64.whl (1.3 MB view details)

Uploaded CPython 2.7m macOS 10.13+ x86-64

parallel_ssh-1.8.2-cp27-cp27m-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 2.7m macOS 10.12+ x86-64

parallel_ssh-1.8.2-cp27-cp27m-macosx_10_11_x86_64.whl (1.3 MB view details)

Uploaded CPython 2.7m macOS 10.11+ x86-64

parallel_ssh-1.8.2-cp27-cp27m-macosx_10_10_x86_64.whl (1.3 MB view details)

Uploaded CPython 2.7m macOS 10.10+ x86-64

File details

Details for the file parallel-ssh-1.8.2.tar.gz.

File metadata

  • Download URL: parallel-ssh-1.8.2.tar.gz
  • Upload date:
  • Size: 102.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for parallel-ssh-1.8.2.tar.gz
Algorithm Hash digest
SHA256 24ff312ba5822ac94b0df504e3a47392defc4cffebc496d58911463fec4c9517
MD5 c8121f73e1157265c7b016adb6636ec6
BLAKE2b-256 f6157c5d21d21ccbcfb213f5a380460b11eb97809792c405fb4ff694884e4192

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for parallel_ssh-1.8.2-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 e7f89b349097d3dd7046510bcf79979314369d7de964741d63e73f2ad2c0e58b
MD5 8144f15ddd970fdcfff743d559f69c54
BLAKE2b-256 90f68ccb0bd22d020cbb5da12c5fcc9faa0944ae0f40fd1d4eab55da90c53cf2

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp37-cp37m-win32.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.0

File hashes

Hashes for parallel_ssh-1.8.2-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 35d28ff1d3476355101c02827be392fb3ccc366d0fa72480d1fe7802c4d142d6
MD5 7b516afef9dccca727b3136b2e4d515d
BLAKE2b-256 1833624fbd0c1de9433ea4e7a7e0f9cc12ae661abd3678b6a0966910352bd00c

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.8.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6e222aadec741a10aae8a5dab787c59ee88f1d1f4b8d635f307839cc82021a5f
MD5 87bf29bc387905a078d86b1b2285e196
BLAKE2b-256 79a129220b0ef0e72ddb11e115190f17fcbd69af3f8a6b7867679cf7873eee7b

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp37-cp37m-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp37-cp37m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7m, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2661f3e36407be50641954b1a73448445c6649cf053cc8136fa139c9c913292c
MD5 3debfebe49d9ca7de06fb013f7c0d850
BLAKE2b-256 81326254a04eb61fc4e70006c04cfa616e1f12c2627f9d3742f9bf35716cfa34

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp37-cp37m-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp37-cp37m-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7m, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp37-cp37m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 417afe6c910059b34fe928beea4d858ed96d74b7c0b9ad74a8863c9e6a14aaf0
MD5 f59c0378d01ecae9fc6d3b3a41d75ec4
BLAKE2b-256 bd42757348e4dae5439c9ba551f146135284c20d58737ce2e6c79d97efef2fad

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp37-cp37m-macosx_10_11_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp37-cp37m-macosx_10_11_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7m, macOS 10.11+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp37-cp37m-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 49b1b5aeab74cdf8c88d0683d3acba15bb753ebbdfe294f5b13c22c37dc71d7c
MD5 b6856a1d33492b0e1e926181d574471b
BLAKE2b-256 f354cb5bf5e9aa106b202f42a6bca16d322de175620463ab5bf11c075830d71f

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp37-cp37m-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp37-cp37m-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.7m, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp37-cp37m-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 b35adb8775b23a01d52f4a60a4bf285df78fd6c4fe35cf8e8ebc0800c1391b68
MD5 ad777ce60e0d051b0a946ab610e78330
BLAKE2b-256 f8eac877d3bb4a37d03bca0c8c28fe71e9575628856ed4adaaa7856b5f96a4c3

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for parallel_ssh-1.8.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 03d4ac96e920c3563ba9257150fe139139a8c445106e01ed5ab65c5c8a28960e
MD5 a7d6a9c16b877758722965e43ed5fae1
BLAKE2b-256 f28d00c29603ca081687aea80e00af6fc23dedd972e863d49e8bb07dfb1c7182

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp36-cp36m-win32.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for parallel_ssh-1.8.2-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 2a3220d92fc1f4405a5077a129136b5f56afda0dc35f2faf44d36b94456226b0
MD5 7e4ba53d86d00a34b82e272a49694806
BLAKE2b-256 309c4606ed9b74230b0392fd0c1d8c0246bb4abdba4c443688f1053d54b253b1

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.8.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a56c2e33d7682c258fad3c04233f1baead437fe6703a1761e518d2f8704e29c1
MD5 88edf7380091ddb3ed1bc0d39070b872
BLAKE2b-256 95adb4fadb883a3962d67406d5d15d591c02616b1f1482f5b43eba3157bfc82e

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp36-cp36m-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp36-cp36m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.6m, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 b241deb77665ba381ab478db58166ff544d22e490a1924068c3c1eaa33e337e0
MD5 91c060e3bec40714ed6d0eccee758fc6
BLAKE2b-256 f48072249a983c4a8a6baae03e04eff361e89885401132b073414d2a18908941

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp36-cp36m-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp36-cp36m-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.6m, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp36-cp36m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3634535c3dcd10a2ed2ec5024784844532046df90820214219bf9618237ff610
MD5 2c373325f0477da663b1585b30133b37
BLAKE2b-256 5dde890fc5ca12dce2ecc16aba99da609ee1475b2201aaa71791b3b9599cf8b3

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp36-cp36m-macosx_10_11_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp36-cp36m-macosx_10_11_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.6m, macOS 10.11+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp36-cp36m-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 ce6e6a55b9c0ca6f4a02466ac0f8f2d9c0a4e4f5b8e915e95bebc342ad193d34
MD5 d0ddaa707db2ec5e6020631758d2334e
BLAKE2b-256 831ee114f13fc5d976fed505bc51a7134f109f18f112e860090dee6eb36c0032

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp36-cp36m-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp36-cp36m-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 3.6m, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp36-cp36m-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 7e97ca994433f5242bf4647a931693cecbb929c1a6b1ac1a49b7a53e6aa502ff
MD5 5824e8e7733d9dd5c9bae9a808d47f39
BLAKE2b-256 00c246c2984873972c1f945bd2ecc30b560fd16c5904955b3f93c222cef3841c

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp35-cp35m-win_amd64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp35-cp35m-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.5m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.5.4

File hashes

Hashes for parallel_ssh-1.8.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 99995e29ae36a9e6da0fd260692bb32b8add3d97a8ffd56dcbcab9cf452fc21f
MD5 07164badca13d126fc9a1afba891edda
BLAKE2b-256 51dd740de6fa64ca36ddf4d8c09ab72a8d38c2eada20ae49d377f6f7e59bd479

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp35-cp35m-win32.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.5.4

File hashes

Hashes for parallel_ssh-1.8.2-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 f3ef5815c5302d1efbd23283d8213873ed08724f0f12c4b7456ba60fd7a1684a
MD5 f91f8ba5479b4577ce0ece40d3a83216
BLAKE2b-256 e1641a3796a494b7a18fd469ee21eba929e08cc9c25a78112e886b2de12d8ca4

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.8.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b6ab7724368bd743d498d5f793e613519b59d112b8e8576251037646a39bcdda
MD5 ede59dc92f7c3df05413ed7ff7510f3c
BLAKE2b-256 23970f9e95cad2d7ec9d808a98124dadd96792b68328cbdd344c88cf366c985e

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp34-cp34m-win_amd64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp34-cp34m-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 3.4m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.4.4

File hashes

Hashes for parallel_ssh-1.8.2-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 5b46c74d4b15f3f3f4e18bef0173cd1f8c0424bca973f45e1a5cfd6b1d51c3af
MD5 86bf19cc5b49910d2b172413558dbf96
BLAKE2b-256 9ceaff8c270cf5237c39ba08594bd5b84a9813cdb952d6253d8ca7b469c52650

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp34-cp34m-win32.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp34-cp34m-win32.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.4m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.4.4

File hashes

Hashes for parallel_ssh-1.8.2-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 1d0742f330a969c6cf25ab221b2ebf5aa032c6a10d976d029c19304d6be9fecc
MD5 24aae4301f0049bbd751e8a59625f670
BLAKE2b-256 44aa5c693cefba767e8f2a03ba98a7c4d3ee51568823f935eb623974a51106aa

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp34-cp34m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.4m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.8.2-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b8c40c2ffc5ff1aaf087384e3e2de351045041eec208dc2b56e755dd0f024d06
MD5 d195aa7028268a9011af12e997cbf40f
BLAKE2b-256 84efe3c8735c01c3ca6436b29e99221a81d989545b340d305ee8179bccb8b194

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp27-cp27mu-manylinux1_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.8.2-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3d186dc6e028d33bf0176caa76b32b0fc4f1ee033f38ddb334ebf37fc5136914
MD5 a8f6b8d68b49aa4d4cbdd46c7476ef64
BLAKE2b-256 15a4f4a4f6db22037de8cdc56cb2e4d2d1ff7b9cfbf3f99eb31af86d31838086

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp27-cp27m-win_amd64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp27-cp27m-win_amd64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: CPython 2.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 dd91e93c8525d35408bd0db38203ba6e1f33e0983636d4dac922a09d8fcbe2a8
MD5 fdd8781855e9558529ff38e500502f94
BLAKE2b-256 12bac02c57a3de0eebc2b210fee78ee6fd9dd0b416dbbe6b65846b008bdacef0

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp27-cp27m-win32.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp27-cp27m-win32.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 2.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp27-cp27m-win32.whl
Algorithm Hash digest
SHA256 5a343c7d8f3ea5ceedf5a2a4c09f5c50c30414cddcb954ea0f06cddc4f94c4d0
MD5 bf245b51920b3a01dcd18cad2677eecc
BLAKE2b-256 8f5e3ceeaa0b09b3350edecad07a602a699ec93fb4c304c587712f8b9de7ebde

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp27-cp27m-manylinux1_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.8.2-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1c9a9db4df9b197324f235899ad94bdfd0955ac5a01e65bf9bb2ecced1e5f1eb
MD5 3669ea00836453c721e6d236e8ac47c6
BLAKE2b-256 2d7414865166427356f5592d4e4c642b992022846264b7e79d8377e5e4ac45b9

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp27-cp27m-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp27-cp27m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 2.7m, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp27-cp27m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 fec530131fb061c703bbfa2c33b7b7656172a97a400f99740cfb2c46fe87773f
MD5 f6bd4546d79a7f5e660560d0fd26726b
BLAKE2b-256 c2eb2f4962790ba544a26e7229f9258a2ef0c0862700f0829cd56329ff633ffc

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp27-cp27m-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp27-cp27m-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 2.7m, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp27-cp27m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 96906f022111ca7761619925b8c2c9b02be4ed620a96d31f446a19ddf9837025
MD5 5222d8a8c64f24494b62fe9e09a07ecb
BLAKE2b-256 d332bd9270e8de3e52768469861fc84d1c5e1df1510d74212c7573a3bb96a8df

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp27-cp27m-macosx_10_11_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp27-cp27m-macosx_10_11_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 2.7m, macOS 10.11+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp27-cp27m-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 02df874d304de7603eec3f5c79ab9f6315ee2e807089a93dc86d34b81b8c72e7
MD5 43aa808b934e4f8da26039efc9d1b612
BLAKE2b-256 4762e9a1b0ff7191fffa878631b496fbe71a8096fa14362b56558c84f282d78f

See more details on using hashes here.

File details

Details for the file parallel_ssh-1.8.2-cp27-cp27m-macosx_10_10_x86_64.whl.

File metadata

  • Download URL: parallel_ssh-1.8.2-cp27-cp27m-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: CPython 2.7m, macOS 10.10+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.8.2-cp27-cp27m-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 d416d31022e56fb6a60d6954990aece19652c1dd59a5f85df72c699e2f63de52
MD5 fadce4a233e72ddc5018ed0e608efeab
BLAKE2b-256 cfb8fcf52ad51efdfc9f5148d98cde31014ad4110caa507750624f955454a0c2

See more details on using hashes here.

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