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 currently 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

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.9.0.tar.gz (96.2 kB view details)

Uploaded Source

Built Distributions

parallel_ssh-1.9.0-cp37-cp37m-win_amd64.whl (88.4 kB view details)

Uploaded CPython 3.7m Windows x86-64

parallel_ssh-1.9.0-cp37-cp37m-manylinux1_x86_64.whl (160.9 kB view details)

Uploaded CPython 3.7m

parallel_ssh-1.9.0-cp37-cp37m-macosx_10_13_x86_64.whl (90.1 kB view details)

Uploaded CPython 3.7m macOS 10.13+ x86-64

parallel_ssh-1.9.0-cp37-cp37m-macosx_10_12_x86_64.whl (89.2 kB view details)

Uploaded CPython 3.7m macOS 10.12+ x86-64

parallel_ssh-1.9.0-cp37-cp37m-macosx_10_11_x86_64.whl (90.0 kB view details)

Uploaded CPython 3.7m macOS 10.11+ x86-64

parallel_ssh-1.9.0-cp37-cp37m-macosx_10_10_x86_64.whl (92.2 kB view details)

Uploaded CPython 3.7m macOS 10.10+ x86-64

parallel_ssh-1.9.0-cp36-cp36m-win_amd64.whl (88.7 kB view details)

Uploaded CPython 3.6m Windows x86-64

parallel_ssh-1.9.0-cp36-cp36m-win32.whl (84.9 kB view details)

Uploaded CPython 3.6m Windows x86

parallel_ssh-1.9.0-cp36-cp36m-manylinux1_x86_64.whl (164.7 kB view details)

Uploaded CPython 3.6m

parallel_ssh-1.9.0-cp36-cp36m-macosx_10_13_x86_64.whl (90.7 kB view details)

Uploaded CPython 3.6m macOS 10.13+ x86-64

parallel_ssh-1.9.0-cp36-cp36m-macosx_10_12_x86_64.whl (89.2 kB view details)

Uploaded CPython 3.6m macOS 10.12+ x86-64

parallel_ssh-1.9.0-cp36-cp36m-macosx_10_11_x86_64.whl (90.0 kB view details)

Uploaded CPython 3.6m macOS 10.11+ x86-64

parallel_ssh-1.9.0-cp36-cp36m-macosx_10_10_x86_64.whl (92.3 kB view details)

Uploaded CPython 3.6m macOS 10.10+ x86-64

parallel_ssh-1.9.0-cp35-cp35m-win_amd64.whl (87.8 kB view details)

Uploaded CPython 3.5m Windows x86-64

parallel_ssh-1.9.0-cp35-cp35m-win32.whl (84.2 kB view details)

Uploaded CPython 3.5m Windows x86

parallel_ssh-1.9.0-cp35-cp35m-manylinux1_x86_64.whl (161.0 kB view details)

Uploaded CPython 3.5m

parallel_ssh-1.9.0-cp34-cp34m-win_amd64.whl (85.1 kB view details)

Uploaded CPython 3.4m Windows x86-64

parallel_ssh-1.9.0-cp34-cp34m-win32.whl (83.3 kB view details)

Uploaded CPython 3.4m Windows x86

parallel_ssh-1.9.0-cp34-cp34m-manylinux1_x86_64.whl (160.2 kB view details)

Uploaded CPython 3.4m

parallel_ssh-1.9.0-cp27-cp27mu-manylinux1_x86_64.whl (149.9 kB view details)

Uploaded CPython 2.7mu

parallel_ssh-1.9.0-cp27-cp27m-win_amd64.whl (85.5 kB view details)

Uploaded CPython 2.7m Windows x86-64

parallel_ssh-1.9.0-cp27-cp27m-win32.whl (83.2 kB view details)

Uploaded CPython 2.7m Windows x86

parallel_ssh-1.9.0-cp27-cp27m-manylinux1_x86_64.whl (149.9 kB view details)

Uploaded CPython 2.7m

parallel_ssh-1.9.0-cp27-cp27m-macosx_10_13_x86_64.whl (88.8 kB view details)

Uploaded CPython 2.7m macOS 10.13+ x86-64

parallel_ssh-1.9.0-cp27-cp27m-macosx_10_12_x86_64.whl (88.0 kB view details)

Uploaded CPython 2.7m macOS 10.12+ x86-64

parallel_ssh-1.9.0-cp27-cp27m-macosx_10_11_x86_64.whl (88.1 kB view details)

Uploaded CPython 2.7m macOS 10.11+ x86-64

parallel_ssh-1.9.0-cp27-cp27m-macosx_10_10_x86_64.whl (90.2 kB view details)

Uploaded CPython 2.7m macOS 10.10+ x86-64

File details

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

File metadata

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

File hashes

Hashes for parallel-ssh-1.9.0.tar.gz
Algorithm Hash digest
SHA256 89d5aec28a7a2b049b2646b2c61ba1811a499c352d5af654d04d22356efde4de
MD5 0d14b9650607e822948c0599a596765f
BLAKE2b-256 f1460f958ce364ae893e78c13b8bbb2db4980fc67759c6a4493b5f55c4db5c34

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 95bee3589121ad7dda92fa98b755ac278f74a83962e1a98f3cd1f9d492154db9
MD5 3596b2e5e5146d899c1f5c20cabc90b2
BLAKE2b-256 3eabc6ff090f3469fca46ca6ec9eaca8dbce752ad4a409b2308e6ce22b3c4455

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 160.9 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.9.0-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 bb03c4770225ec1466f64043f25709a8bec1b939b2bf40f3e740450e258663c3
MD5 24287b9d14a01c6d345b2162e3b3b38c
BLAKE2b-256 d00c0433fc39030fda8e863b8d6291085a5470be9a46df2354597c41b0366eed

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp37-cp37m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 90.1 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c27c775bb036c11edfee26a722e8fe98f887f63b2caf960c1e5814218d94ed37
MD5 fdbecd0b901b64c3b8043696619257be
BLAKE2b-256 9cf4105dfdd62f7d6775e4aceb080b98239ec7e23d5054d5c75c12a10805775c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp37-cp37m-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 89.2 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp37-cp37m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2c80e2d8736e4689cbc9338b7cd51c69a5f31e1ab5e78fdba2523770cf5c38c5
MD5 859ed88b7cfefddb57022bb1e00d0321
BLAKE2b-256 678470f0d5eb56eaf51133947e5dff130b93b2e536f85079ffab8bbb39fd2e63

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp37-cp37m-macosx_10_11_x86_64.whl
  • Upload date:
  • Size: 90.0 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp37-cp37m-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 8b94892db8819e2385143e8e38b7212f5d6811a1a7a9c5d6716bb10704473390
MD5 9014da21ccaafb7e5bfba2e5eae3d3ce
BLAKE2b-256 e9682d92e29ee5aac547d33287aee59a31dae25ac92e755508265e84ae6790d5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp37-cp37m-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 92.2 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp37-cp37m-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 df9511151935401093799da4fce9dec880411138337f7ecef3b6a6e6942e1840
MD5 f859f9bb043d96164e07042574d65ce9
BLAKE2b-256 a75052e34e28667508be658b78dd81b1630cd492a0a8a45ddc2ab771759055b8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 881fef9d38140d9857178522d2b6c88dcf18982468b36e23ae32e5b576ce237f
MD5 8872fb69b2972993d60ba455b901b913
BLAKE2b-256 0c236f8c781dbc93361f7eb71ab1a2a98c1e61d14bd5fe5f63286b0fde1fb808

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 0c4a48234ecb695e0164e568585b5863cac82dfa1738981a0617efdc27028649
MD5 78efdfa909d195d66f749c309557725f
BLAKE2b-256 0e559619d5b79e417050671c378a88b45d742b7f5a635b3aa777d641590ce623

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 164.7 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.9.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d2fac031932d226e87fcc1df8e8ba70d9d37bc2789416fc9e33730698aa7d4f1
MD5 6098b0179281d5988fe212f0b5bdd502
BLAKE2b-256 eca2b3050bc95ddc592ef7ed215228857267e03458133fe72882177daa803b97

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp36-cp36m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 90.7 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 487e39118b4dc5967d93bcf297568e49181ae93c29ae3ceb08263308a6e0138a
MD5 92fe2be72a53b8ab34262d3f647f62bc
BLAKE2b-256 fb67148236c62e51b55c471be5d65d8db7ae370a1a69ce73525d820fc973234a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp36-cp36m-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 89.2 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp36-cp36m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c1379c5c031ac596f16169d69ea6f7649cdf5269d21c979e7f97311af017bd67
MD5 77373916782f59c1dd92e354ba005cd8
BLAKE2b-256 442e807afc60c36b29956b381a5a4fff836dc66143684431c441c85c4a204435

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp36-cp36m-macosx_10_11_x86_64.whl
  • Upload date:
  • Size: 90.0 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp36-cp36m-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 0c459f8d8cb13cff39e482a86067fd340f4d7851cd960c81ff4911a291ae54e9
MD5 c8084fd1087280479c4a0fe572f866b8
BLAKE2b-256 5ff58ca29cebb8971d02ae7f0d768c86439352eb63495a15edd7718416cba17d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp36-cp36m-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 92.3 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp36-cp36m-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 19fb6bae5aaf1ed33a7e19c585c2cdef0679cc03ce14dd00c3329428ce2f327e
MD5 b44d322601eddd691d1b233c9a6db5f7
BLAKE2b-256 93cbd626f2a39084252fd10df6a3ea8291a2cdc9cc2e12e11d1e3f88fc518ac5

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 b66defc0c90b162019229dd62ef140f15be0db72ec2ae11437f7107afe3bc2bc
MD5 14dd327f586241ed5c7e1d6365811943
BLAKE2b-256 0acdce42f01e924b84b20f1e54aeec0e21bdfde75ef784f67a96eac0e0115a35

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 62ac56235b85444a0c8f2496887b66a940e96f3de04069498b67b2db25bf90a5
MD5 2db6572f633e3e3602b565da67907d3d
BLAKE2b-256 2a8ef0fb1ed4fa5428da8bffaac269d5e1ae47cc25663e372f9687f9aa70a776

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp35-cp35m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 161.0 kB
  • Tags: CPython 3.5m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.9.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 16b774237d756a33903f46db2b960d6ddf0b00dc6eff1ac7a8c26be17bb05e88
MD5 2337217f30885122b9e1f8cd2ca35c5d
BLAKE2b-256 fe72d3230c2d230a9614caf7f4c0935d0adac83d0e8992c015a4916380fffa04

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 b1c38994356cea513bd89d40b47176c4f468c4adb909a1679090cdad728c1257
MD5 6136b8c3e4798d76c122a57b50628a6d
BLAKE2b-256 24b5f72779e17ddde8c01bb69c6df0246a440639498ba8692adf9ad5316b014f

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 6be584acafc6508cee12258772270cec28889bef6816681a8c570afb25d2a198
MD5 1952f1df180ffa650497000da3905407
BLAKE2b-256 3696c48caef13cdab7dc987a0ed9e93f2c60448558b9bad83b6b428fc22c3019

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp34-cp34m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 160.2 kB
  • Tags: CPython 3.4m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.9.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c2b2444a500e22c97cd645ad8ca6f7a89548a0b6e83b912a5805ff363097b86b
MD5 24408441f52e5aafafc57073104cdbf2
BLAKE2b-256 20f7241d0294d1014b205183a749d833245532e0a81873fd33da4b0114e61661

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp27-cp27mu-manylinux1_x86_64.whl
  • Upload date:
  • Size: 149.9 kB
  • Tags: CPython 2.7mu
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.9.0-cp27-cp27mu-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 cd65c14b5b9a883890e12109f1052dd2dfbc8535b23d9dad881072e0f481ff0b
MD5 c2576033bf1d6a61e1f6da06ab0ce890
BLAKE2b-256 da811d4e8bec1daeb28339478fd08d5c2d64c2d8fe5328c9125aa81da5e19e58

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp27-cp27m-win_amd64.whl
Algorithm Hash digest
SHA256 699263de45e59eed6b0cd5f9aa6c61c1484ea79fbabe2a46df99055d2c120648
MD5 71a54fd50b255c109aa1427cd20360cd
BLAKE2b-256 492264b294369b163768b47c1d55dbbab98e1522965e88fab4760120abcc9654

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for parallel_ssh-1.9.0-cp27-cp27m-win32.whl
Algorithm Hash digest
SHA256 e1ff6d38300b9fd1c629e4cc27661ce9342c48ac9c14447bcba0e5dda0591e18
MD5 194ca038ac54b7480cb1e50e18c0c39b
BLAKE2b-256 4b98dcd03a35c8169def9fcdf5ebd54debfcc9a5bc13d1b1ae294fce3ec0b04d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp27-cp27m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 149.9 kB
  • Tags: CPython 2.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.0 setuptools/38.2.4 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.3

File hashes

Hashes for parallel_ssh-1.9.0-cp27-cp27m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 efa33cc1ddfe971c687881167343cf28d6c476e5efbe92ef60dd00bfb5e8a4ea
MD5 fa637a12c1f545fee8328494bb756e87
BLAKE2b-256 e9de4975f75acf6f538505e8017b0dab727898817ab5f884c78ff7bd0f258184

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp27-cp27m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 88.8 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp27-cp27m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 af289d4a217e60ad7a90688de23391a34aee5fc3915f3e96548bf1fd8e3f2932
MD5 623cdcfc95596e661f2b7964dd4def60
BLAKE2b-256 c870a94c341474923ba397a6f59e1c458c3818ad8af9051a96f993476bba34c3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp27-cp27m-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 88.0 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp27-cp27m-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5a1f329745a305a094039125ae6f371055941557fb5268a4efbf842146684bf9
MD5 552402605afbeaf4071beb494ecad47d
BLAKE2b-256 4aec631d8e0b4965da6d407cfc5b62622fc8ca556149399c6036cd7a3e68d900

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp27-cp27m-macosx_10_11_x86_64.whl
  • Upload date:
  • Size: 88.1 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp27-cp27m-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 c30bf36f06bd05ce00a8fd5012e1de5033419d1322c9c4e89f021c3b4ce74357
MD5 a24c9f585d3fd49105a81d8793abfafd
BLAKE2b-256 9bfc0af938fa6d66b5c2935c157c36549338003e11d7fcdc73d5ac6fa5e27dd6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: parallel_ssh-1.9.0-cp27-cp27m-macosx_10_10_x86_64.whl
  • Upload date:
  • Size: 90.2 kB
  • 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.20.0 setuptools/40.4.3 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/2.7.15

File hashes

Hashes for parallel_ssh-1.9.0-cp27-cp27m-macosx_10_10_x86_64.whl
Algorithm Hash digest
SHA256 4834cd5d3d4fe8402b2a3cc9afdb5c518ba309322d92def24fe4daf9000ac93f
MD5 013c8ccd902228354cb46c3f6e8a3091
BLAKE2b-256 a076fc5b7513b1e993f97553b7b6611b17cdadefb5a5f212e7f04f8aa6a2b4e2

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