Metadata-Version: 2.1
Name: quickrun
Version: 0.0.6
Summary: Easily run commands and gather info across multiple servers
Home-page: https://github.com/danstewart/quickrun
Author: Dan Stewart
Author-email: git@mail.danstewart.dev
License: GPLv3
Platform: UNKNOWN
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Description-Content-Type: text/markdown
Requires-Dist: pexpect
Requires-Dist: rich

# quickrun

quickrun is a module designed to make it easy to run commands and gather info from multiple servers.  

## Dependencies
- python3.8
- jq
- aws cli (v1)

---

## Getting started

#### Setup
Install:  
```
pip3 install quickrun
```

Use:  
```python
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' }, 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](#Hooks).  
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 object
- `none`: Does nothing
- `fake_shell`: Formats the run as if it was ran directly
- `table`: Outputs the run as a table


##### aws_cli
There is also a helpful `quickrun.aws_cli.find_instances()` function that takes a string and region and returns all instances with the `name` tag containing that string.  

---

## Hooks

TODO


