Easily run commands and gather info across multiple servers
Project description
quickrun
quickrun is a module designed to make it easy to run commands and gather info from multiple servers.
Dependencies
- python3.8
- aws cli (v1)
Getting started
Setup
Install:
pip3 install quickrun
Use:
import quickrun
from quickrun.cli.aws import find_instances
# Define instance
qr = quickrun.QuickRun()
# Configure
qr.servers = [ quickrun.Server(host="my-ip-address-or-hostname", name="my-web-server", user="username") ]
# or from aws cli
qr.servers = quickrun.Servers.from_list(find_instances({ 'tag:environment': 'production', 'tag:name': '*web*' }, region='eu-west-1'))
qr.commands = [ quickrun.Command(name="Get openssl version", cmd="openssl version") ]
qr.formatter = quickrun.formatters.table
# Call
qr.main()
qr.display()
This will display something like:
Results
┏━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ server ┃ host ┃ command ┃ output ┃
┡━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ my-instance-name-1 │ 192.168.0.1 │ openssl version │ OpenSSL 1.1.1 11 Sep 2018 │
│ my-instance-name-2 │ 192.168.0.1 │ openssl version │ OpenSSL 1.1.1 11 Sep 2018 │
│ my-instance-name-3 │ 192.168.0.1 │ openssl version │ OpenSSL 1.1.1 11 Sep 2018 │
│ my-instance-name-4 │ 192.168.0.1 │ openssl version │ OpenSSL 1.1.1 11 Sep 2018 │
└────────────────────┴─────────────┴─────────────────┴────────────────────────────┘
Making a script
Option 1: Basic script using some of the functions
You can just write a normal python script and use some of the functions from this module.
See examples/healthcheck.py
as an example.
Option 2: Calling out to QuickRun
There is also the base QuickRun
class which can be configured and called.
See examples/openssl-version.py
and examples/list-logs.py
as examples.
Option 3: Extending QuickRun
You could also create your own class extending from QuickRun
.
This is handy since you can override the hook methods.
See examples/get-memory-settings.py
as an example.
Helpers
There are a few core helpers built in to quickrun.
Formatters
There are a few formatters defined in quickrun.formatters
default
: Just prints out the python objectnone
: Does nothingfake_shell
: Formats the run as if it was ran directlytable
: Outputs the run as a table
cli.aws
There is also a helpful quickrun.cli.aws.find_instances()
function that takes a dict of filters and returns matching instances.
Example:
find_instances({ 'tag:name': 'web', 'tag:environment': 'prod' }, region='eu-west-1')
cli.helpers
There is a collection of misc CLI helpers in quickrun.cli.helpers
.
Currently there is only challenge(expect: str) -> bool
which prompts the user to re-enter a value.
Hooks
TODO
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
Built Distribution
File details
Details for the file quickrun-0.0.8.tar.gz
.
File metadata
- Download URL: quickrun-0.0.8.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2922ae7336e1134e2c5112eb3951c2671d64b165ecab3467c2db3711043ecec1 |
|
MD5 | 46d3fce7e4a9cc73d2ecdba2e2a92792 |
|
BLAKE2b-256 | ad655c179f945cc956556076608b9f5743c0b46c5ba5b783652c57baeef2f5cc |
File details
Details for the file quickrun-0.0.8-py3-none-any.whl
.
File metadata
- Download URL: quickrun-0.0.8-py3-none-any.whl
- Upload date:
- Size: 19.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 10d2b4e835f6df2ae32ca2c907d5c62a7e632ec47ced4c468fa8df40fd241125 |
|
MD5 | 384f9bebc5b0471718bb802da3a00c4e |
|
BLAKE2b-256 | 42e04680637fa94ac3c634ca9b2a6164b6acefbf731b213f1c9a0382f79547e2 |