Skip to main content

pypsh - cli for parallel ssh command execution on all known hosts that match a

Project description

pypsh is a simple commandline tool to execute a command in parallel on multiple hosts.

Under the hoods it uses ssh via the paramiko python library.

Why pypsh instead of dsh?

Because managing group files with dsh is tedious. Pypsh requires no configuration, it just works.

Similar to dsh, pypsh can be used to execute a command on multiple hosts in parallel. In addition it is also possible to copy a file to multiple hosts at once. See below for further usage instructions.

The command or file copy operation will be executed on any host that is in the known_hosts file and matches the given regular expression.

This means in order for pypsh to know about a host it is necessary to connect to it at least once with plain ssh.

Command Execution

To execute a command on a group of hosts matching a given regular expression:

pypsh <hostregex> <cmd-to-execute>

E.g.:

pypsh "role\d+\.customer\.your\.domain" "uptime"

Instead of executing the commands in parallel it is also possible to execute the commands one after another. To do so use:

pypsh "role\d+\.customer\.your\.domain" --interval 0.1 cmd "uptime"

Or to wait between the commands (which might be useful when restarting services like elasticsearch that are part of a cluster):

pypsh "role\d+\.customer\.your\.domain" -i 60 cmd "uptime"

pypsh can also read from stdin. So it is possible to pipe command into it:

echo "uptime" | pypsh "myhosts[0-9]"

Copy file to multiple hosts

To copy a given file to a group of hosts:

pypsh "my\.domains\d+\.com" copy /tmp/here/myfile.txt /tmp/remote/file.txt

Installation

pypsh can be installed using pip:

pip install pypsh

Development

To work on pypsh checkout the git repository, create a virtual environment and install the dependencies:

git clone https://github.com/mfussenegger/pypsh.git
cd pypsh
mkvirtualenv pypsh
pip install -r requirements.txt

Sometimes it is useful to point the pypsh command to the local development branch:

pip install --upgrade --force-reinstall --editable .

But usually it is sufficient to invoke it like this:

python pypsh/main.py ...

Project details


Download files

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

Source Distribution

pypsh-0.7.3.tar.gz (5.5 kB view details)

Uploaded Source

File details

Details for the file pypsh-0.7.3.tar.gz.

File metadata

  • Download URL: pypsh-0.7.3.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for pypsh-0.7.3.tar.gz
Algorithm Hash digest
SHA256 26c06231988b1d707f5e2c9d10074fa3d69f8f1e15ef514026d137403d4567ac
MD5 e689041210e477973bc781732b6223ff
BLAKE2b-256 27170f8666fe93e4fc9a91b786cf374b7e94b081f543624921d019d66b69afb3

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