Skip to main content

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.

from pssh.clients import ParallelSSHClient

hosts = ['localhost', 'localhost']
client = ParallelSSHClient(hosts)

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

Native client

Starting from version 1.2.0, the default client in parallel-ssh has changed to the native clint which offers much greater performance and reduced overhead than the current default client.

The new default 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.

The paramiko based client under pssh.clients.miko and the old pssh.pssh_client imports will be removed on the release of 2.0.0.

Default client:

from pssh.clients import ParallelSSHClient

hosts = ['localhost', 'localhost']
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 library

  • Thread safe - makes use of native threads for CPU bound 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, consume_output=True) 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.

HostOutput.exit_code is a dynamic property and will return None when exit code is not ready, meaning command has not finished, or channel is unavailable due to error.

Once all output has been gathered exit codes become available even without calling join.

output = client.run_command('uname', return_list=True)
for host_out in output:
    for line in host_out.stdout:
        print(line)
    print(host_out.exit_code)
Output:
Linux
0
Linux
0

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

After join returns, commands have finished and output can be read.

client.join(output)

for host_out in output:
    for line in host_output.stdout:
        print(line)
    print(host_out.exit_code)

Similarly, exit codes are available after client.join(output, consume_output=True).

consume_output flag must be set to get exit codes when not reading from stdout. Future releases aim to remove the need for consume_output to be set.

output = client.run_command('uname')

# Wait for commands to complete and consume output so can get exit codes
client.join(output, consume_output=True)

for host_output in output:
    print(host_out.exit_code)
Output:
0
0

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()
output = client.run_command('uname')
client.join(output, consume_output=True)
Output:
[localhost]       Linux

SCP

SCP is supported - native clients only - and provides the best performance for file copying.

Unlike with the SFTP functionality, remote files that already exist are not overwritten and an exception is raised instead.

Note that enabling recursion with SCP requires server SFTP support for creating remote directories.

To copy a local file to remote hosts in parallel with SCP:

from pssh.clients import ParallelSSHClient
from gevent import joinall

hosts = ['myhost1', 'myhost2']
client = ParallelSSHClient(hosts)
cmds = client.scp_send('../test', 'test_dir/test')
joinall(cmds, raise_error=True)

See also documentation for SCP recv.

SFTP

SFTP is supported natively. Performance is much slower than SCP due to underlying library limitations and SCP should be preferred where possible. In the case of the deprecated paramiko clients, several bugs exist with SFTP performance and behaviour - avoid if at all possible.

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.6.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 files for parallel-ssh 1.12.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for parallel-ssh 1.12.1
File Size Uploaded
parallel-ssh-1.12.1.tar.gz 133.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for parallel-ssh 1.12.1
File
parallel_ssh-1.12.1-cp39-cp39-manylinux2010_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.12+ x86-64 Details
parallel_ssh-1.12.1-cp39-cp39-manylinux1_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.5+ x86-64 Details
parallel_ssh-1.12.1-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
parallel_ssh-1.12.1-cp38-cp38-manylinux2010_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.12+ x86-64 Details
parallel_ssh-1.12.1-cp38-cp38-manylinux1_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.5+ x86-64 Details
parallel_ssh-1.12.1-cp38-cp38-macosx_10_15_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.15+ x86-64 Details
parallel_ssh-1.12.1-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
parallel_ssh-1.12.1-cp37-cp37m-manylinux2010_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64 Details
parallel_ssh-1.12.1-cp37-cp37m-manylinux1_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64 Details
parallel_ssh-1.12.1-cp37-cp37m-macosx_10_14_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.14+ x86-64 Details
parallel_ssh-1.12.1-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
parallel_ssh-1.12.1-cp36-cp36m-manylinux2010_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64 Details
parallel_ssh-1.12.1-cp36-cp36m-manylinux1_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 Details
parallel_ssh-1.12.1-cp35-cp35m-manylinux2010_x86_64.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.12+ x86-64 Details
parallel_ssh-1.12.1-cp35-cp35m-manylinux1_x86_64.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64 Details
parallel_ssh-1.12.1-cp27-cp27mu-manylinux2010_x86_64.whl CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.12+ x86-64 Details
parallel_ssh-1.12.1-cp27-cp27mu-manylinux1_x86_64.whl CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.5+ x86-64 Details
parallel_ssh-1.12.1-cp27-cp27m-manylinux2010_x86_64.whl CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.12+ x86-64 Details
parallel_ssh-1.12.1-cp27-cp27m-manylinux1_x86_64.whl CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.5+ x86-64 Details

Total release size: 4.4 MB

Release files / parallel-ssh-1.12.1.tar.gz

Download URL parallel-ssh-1.12.1.tar.gz
Size 133.4 kB
Tags Source
SHA-256 checksum
How to use checksums
077dad54342839ced6688f5c9afc1b07c214839686dc6f8ca730dedfd89c8a52
BLAKE2b-256 checksum
How to use checksums
e9c07bd54b1ee3ad97d51fda657a746a01a7b3240d5c0997fd242a94e43a234c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp39-cp39-manylinux2010_x86_64.whl

Download URL parallel_ssh-1.12.1-cp39-cp39-manylinux2010_x86_64.whl
Size 293.3 kB
Tags CPython 3.9 Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
bd49661fa383776f057150d260f7e24132486105fa0a301a3ee23fe7602a8ffd
BLAKE2b-256 checksum
How to use checksums
70ba1a83133f039526c3037e26ed5195310211534c34ed22f06fa92c251610ba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp39-cp39-manylinux1_x86_64.whl

Download URL parallel_ssh-1.12.1-cp39-cp39-manylinux1_x86_64.whl
Size 293.3 kB
Tags CPython 3.9 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
46d24be5f360ee73fc48c66a67f5e46177cb65fbe8da84f7b934bc4fba3d1e21
BLAKE2b-256 checksum
How to use checksums
52c482b178d06d3b87d90de6912602561108aa13e387dfb50cd0271541e0bf12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp38-cp38-win_amd64.whl

Download URL parallel_ssh-1.12.1-cp38-cp38-win_amd64.whl
Size 125.5 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
faf774c937485fd593f646f908cdf0827c5083e5e017e1001f3d18f519607fae
BLAKE2b-256 checksum
How to use checksums
aeb980e0d9a0b6e13a3709f3f0fc9c532b77f500f8d5fd134a5825c2fe4cd824
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.0

Release files / parallel_ssh-1.12.1-cp38-cp38-manylinux2010_x86_64.whl

Download URL parallel_ssh-1.12.1-cp38-cp38-manylinux2010_x86_64.whl
Size 303.4 kB
Tags CPython 3.8 Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
c16f8a526317b2fad6266580ea8521bd6d42e4e408908fac2e295287a7dc9a8f
BLAKE2b-256 checksum
How to use checksums
8c304a3c8b61f901b2bad16afa91fbedc5a8bc531dcfe48c19491dbcf208afac
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp38-cp38-manylinux1_x86_64.whl

Download URL parallel_ssh-1.12.1-cp38-cp38-manylinux1_x86_64.whl
Size 303.4 kB
Tags CPython 3.8 Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
59aea4b6d15966c63b85a47dcb6a8179921cff8b8ac2317d5888e071a3d2b5f2
BLAKE2b-256 checksum
How to use checksums
6691b0085882b32db24c2133893495ae43b56b753889f120c1b74018106a79cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp38-cp38-macosx_10_15_x86_64.whl

Download URL parallel_ssh-1.12.1-cp38-cp38-macosx_10_15_x86_64.whl
Size 129.4 kB
Tags CPython 3.8 macOS 10.15+ x86-64
SHA-256 checksum
How to use checksums
26ad47abace5f9fc6c926913c723d1f032204ad53d8da4ab7a9813f25f4017bf
BLAKE2b-256 checksum
How to use checksums
77189df93879d8be56acd8f306435c4aab1914fa54df20f5ee426011dbe714b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/2.7.17

Release files / parallel_ssh-1.12.1-cp37-cp37m-win_amd64.whl

Download URL parallel_ssh-1.12.1-cp37-cp37m-win_amd64.whl
Size 123.9 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
09d19b9bda3769fda47b0be543d348b513a8730aec53fbfb7aa08b86386432ba
BLAKE2b-256 checksum
How to use checksums
fea7c056ae1bd43f6e44cc5a6aa5b2dbcdec5f86bd7afac168559174b8b579b7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.7.5

Release files / parallel_ssh-1.12.1-cp37-cp37m-manylinux2010_x86_64.whl

Download URL parallel_ssh-1.12.1-cp37-cp37m-manylinux2010_x86_64.whl
Size 256.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
28beb1ef1da4cf0b877c6420215641d228baee65110d301424999f997c1d6b47
BLAKE2b-256 checksum
How to use checksums
717ed70362eb71e19eb419923f4cc85ac8ffad28eb9735ed243ea31034bb1ad7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp37-cp37m-manylinux1_x86_64.whl

Download URL parallel_ssh-1.12.1-cp37-cp37m-manylinux1_x86_64.whl
Size 256.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
f3ea159227a7672374f17a609138f5ca604f0ec19ae607162a6ac78f72b70089
BLAKE2b-256 checksum
How to use checksums
0d7157f42588be8da2aa6338356140fca31ef6d3f53e1da23442030b0a26bff1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp37-cp37m-macosx_10_14_x86_64.whl

Download URL parallel_ssh-1.12.1-cp37-cp37m-macosx_10_14_x86_64.whl
Size 128.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.14+ x86-64
SHA-256 checksum
How to use checksums
acca6e1d506fe5fd9052a1cc8159ffcde78c654fc460bb17639215bc3abd449b
BLAKE2b-256 checksum
How to use checksums
5e7592d226dcf785b06c70f49a7ed93f4c46210b0c98bca714cece91e777d004
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.15.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/41.4.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/2.7.17

Release files / parallel_ssh-1.12.1-cp36-cp36m-win_amd64.whl

Download URL parallel_ssh-1.12.1-cp36-cp36m-win_amd64.whl
Size 124.0 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
40c148fbb81b98d3f5841bac0a944cbd6eab381b7b253684d8b9492a91606910
BLAKE2b-256 checksum
How to use checksums
36f1d29d82e25e926d1d6b1b9be7be9ad239b461ee7281ba820b326d076e56ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.6.0 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.8

Release files / parallel_ssh-1.12.1-cp36-cp36m-manylinux2010_x86_64.whl

Download URL parallel_ssh-1.12.1-cp36-cp36m-manylinux2010_x86_64.whl
Size 255.6 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
fd1e8b79da148ec08861dbfa9121e2fdcceb05488e5339488fc9652b45d61463
BLAKE2b-256 checksum
How to use checksums
d51898dd2f485067bb2f549456858866219321197809193506c61e4b320df524
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp36-cp36m-manylinux1_x86_64.whl

Download URL parallel_ssh-1.12.1-cp36-cp36m-manylinux1_x86_64.whl
Size 255.6 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
fe03890b5d275bc22d4bcc4e4667425b287362965163203738de4a95fdd28c20
BLAKE2b-256 checksum
How to use checksums
1172db84767cddfebcc80641434ee7dd16ac681b64d5cde7f5b32cf3b2d83686
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp35-cp35m-manylinux2010_x86_64.whl

Download URL parallel_ssh-1.12.1-cp35-cp35m-manylinux2010_x86_64.whl
Size 257.0 kB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
98cd7aa5d8cbad64c93539034bbeeda372b8909368964fdbd7872dc7ae11f5b7
BLAKE2b-256 checksum
How to use checksums
feb8c309a166de995f9cfa6ecadac467f7d74e9a902eb5f3166d51fc9baa5c7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp35-cp35m-manylinux1_x86_64.whl

Download URL parallel_ssh-1.12.1-cp35-cp35m-manylinux1_x86_64.whl
Size 257.0 kB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
66eb442fbc2d0a678f7e163265f9e12a80c43b6c67321ab1ed682a0125022493
BLAKE2b-256 checksum
How to use checksums
0a46ac7c93b2900c16536ea058b899b688a80225a35332defe352f6371b2dd8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp27-cp27mu-manylinux2010_x86_64.whl

Download URL parallel_ssh-1.12.1-cp27-cp27mu-manylinux2010_x86_64.whl
Size 235.1 kB
Tags CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
4ea06358230d572e475bc18bd02345cbeea55c2bdafd6bbcdcc675c493c34d7b
BLAKE2b-256 checksum
How to use checksums
6c4ab6defa38f0e8fb1804974bcad377989d288a51325f7c7e5c684caf0a61f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp27-cp27mu-manylinux1_x86_64.whl

Download URL parallel_ssh-1.12.1-cp27-cp27mu-manylinux1_x86_64.whl
Size 235.1 kB
Tags CPython 2.7 CPython 2.7 pymalloc wide-unicode Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
43afde3b39a3e502c888dd3e4f37355561d895a442f0c563b696b84c0d339dcb
BLAKE2b-256 checksum
How to use checksums
2d3c06c8fce13b41ba67c6d40847157b6c258ca6305f9064cf1bb1447a6e472a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp27-cp27m-manylinux2010_x86_64.whl

Download URL parallel_ssh-1.12.1-cp27-cp27m-manylinux2010_x86_64.whl
Size 235.1 kB
Tags CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.12+ x86-64
SHA-256 checksum
How to use checksums
3042a04256782a279512d832f80fab96cb928903459028a53a2505fc2398cf77
BLAKE2b-256 checksum
How to use checksums
d144cf8d71e0eb8993cc5a8a57678406d8966937f8ff0e61eb12c52333ba1d83
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release files / parallel_ssh-1.12.1-cp27-cp27m-manylinux1_x86_64.whl

Download URL parallel_ssh-1.12.1-cp27-cp27m-manylinux1_x86_64.whl
Size 235.1 kB
Tags CPython 2.7 CPython 2.7 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
51baba149df28ddcffc71813953bab6789834ef5667131f5de81411e3949e08a
BLAKE2b-256 checksum
How to use checksums
fdb4de3204b54d06369450f6f4fa0ce7aa9e27dcde3fdcfd620df042dfbaae60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/47.3.1 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.6.7

Release history Release notifications | RSS feed

2.16.0

2 release files

2.15.0

2 release files

2.13.0

2 release files

2.12.0

2 release files

2.11.1

2 release files

2.9.1

2 release files

2.9.0

2 release files

2.8.0

2 release files

2.7.1

2 release files

2.7.0

2 release files

2.5.4

2 release files

2.5.3

2 release files

2.5.2

2 release files

2.5.1

2 release files

2.5.0

2 release files

2.4.0

2 release files

2.3.2

2 release files

2.3.1

2 release files

2.3.0

2 release files

2.2.0

2 release files

2.0.0

2 release files

This release

1.12.1 This release

20 release files

1.9.0

28 release files

1.8.0

18 release files

1.7.0

18 release files

1.6.3

18 release files

1.6.2

18 release files

1.6.1

18 release files

1.6.0

18 release files

1.5.4

18 release files

1.4.0

18 release files

1.3.2

18 release files

1.3.1

18 release files

1.3.0

18 release files

1.2.0

18 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.94.0

3 release files

0.93.0

1 release file

0.92.2

3 release files

0.92.1

3 release files

0.91.1

1 release file

0.91.0

1 release file

0.90.0

1 release file

0.80.7

1 release file

0.80.6

1 release file

0.80.5

1 release file

0.80.3

2 release files

0.80.2

2 release files

0.70.4

1 release file

0.70.3

1 release file

0.70.2

1 release file

0.70.1

1 release file

0.70

1 release file

0.61

1 release file

0.7

1 release file

0.6

1 release file

0.5

1 release file

0.4

1 release file

0.3

1 release file

0.2

1 release file

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page