PyWisp installation
Install pywisp
pip3 install --user pywisp_emibcn
Configure PyWisp
Then configure as per ~/.pywisp
Finally, create the python script which implements the WISP infrastructure and authentication mechanisms, as per wisp.py
PyWisp usage
usage: pywisp [-h] [--conf CONF] {backup_ac,backup_mt,reorder_ac,host} ...
positional arguments:
{backup_ac,backup_mt,reorder_ac,host}
backup_ac Backup all AirControl devices
backup_mt Backup all Mikrotik devices
reorder_ac Reorder branches from AirControl devices
host Find device by it's hostname, MAC or IP
optional arguments:
-h, --help show this help message and exit
--conf CONF Reads configuration from this file instead of default
(default: $HOME/.pywisp)
Backup all Ubiquiti's devices
usage: pywisp backup_ac [-h] [--retries] [PATH]
positional arguments:
PATH Directory in which save backup files (default: None)
optional arguments:
-h, --help show this help message and exit
--retries Retries for every device before stop trying (default: 3)
Backup all Mikrotik's devices
usage: pywisp backup_mt [-h] [--retries] [PATH]
positional arguments:
PATH Directory in which save backup files (default: None)
optional arguments:
-h, --help show this help message and exit
--retries Retries for every device before stop trying (default: 3)
Host lookup and actions
usage: pywisp host [-h] [--deep] [--from-br FROM_BR] [--getname] [--getjson]
[--getip] [--getid] [--getmac] [--getdhcp] [--getwifi]
[--getwifistations] [--getstatus] [--url] [--ssh]
[--cmd CMD]
host
positional arguments:
host Devices hostname, MAC or IP
optional arguments:
-h, --help show this help message and exit
--deep Find device by it's hostname, MAC or IP, using all BRs
station list as haystack (default: False)
--from-br FROM_BR Deep find only in this BR (default: None)
--getname Gets device name (default: False)
--getjson Gets device full data (default: False)
--getip Gets device IP (default: False)
--getid Gets device ID (default: False)
--getmac Gets device MAC (default: False)
--getdhcp Gets device's DHCP leases/stations (default: False)
--getwifi Gets device's wifi status (default: False)
--getwifistations Gets device's wifi stations (default: False)
--getstatus Gets device status (default: False)
--url Gets an authenticated URL to connect to the device using
browser (default: False)
--ssh Connects to device using SSH (default: False)
--cmd CMD Connects to device and run a command (default: None)
PyWisp config file: ~/.pywisp
[wisp]
path = ${env:HOME}/MyWISP/
module = wisp
class = MyWISP
[ac]
url = https://10.100.1.102:9082
user = admin
password = MyNotSoSecurePassword
[backup]
ac = /var/backups/mywisp/ac/
mt = /var/backups/mywisp/mt/
WISP infrastructure and host authentication definitions
${env:HOME}/MyWISP/wisp.py
In this example, we hardcode relations between IPs, some device names, users and passwords. We could be getting those relations from where ever, for example, an SQL database, a secure wallet downloaded from an S3, an spreadsheet at GoogleDocs (sic), an internal REST API, etc. Examples are welcome via pull request.
You can add more types of devices (for example, Mimosa) subclassing SSHDevice and instantiating it correctly from your wisp.py. If you do so, I appreciate pull requests ;)
You can create a complete subclassed Wisp object and pass it to PyWisp on instantiation. This way you can use PyWisp from within other projects, like from your Django APP or from your Zabbix scripts, mantaining your infrastructure and authentication mechanisms centralized.
TODO list
- Move
prints and similars to agoodlogging system. - Enhance logging system
- Create examples repo with one
wisp.pyexample - Create more examples (useful for testing, too)
- Create more and useful documentation
- Testing
- Testing, testing, testing...
Metadata
Release files for pywisp-emibcn 0.0.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pywisp_emibcn-0.0.11.tar.gz | 28.8 kB | Without provenance | Details for pywisp_emibcn-0.0.11.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pywisp_emibcn-0.0.11-py3-none-any.whl | Python 3 | none | any | Details for pywisp_emibcn-0.0.11-py3-none-any.whl |
Total release size: 57.8 kB
Release files / pywisp_emibcn-0.0.11.tar.gz
| Download URL | pywisp_emibcn-0.0.11.tar.gz |
|---|---|
| Size | 28.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1e9161f0d41a3253e4d7fb237a195d27b1dcbbb2c8689e19d01430defadc1183
|
|
BLAKE2b-256 checksum How to use checksums |
1b1fe5002ccd0f9925ac34dbc1e1eafcf833a0910398b9afc1fe688c0cf802c4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6
|
Release files / pywisp_emibcn-0.0.11-py3-none-any.whl
| Download URL | pywisp_emibcn-0.0.11-py3-none-any.whl |
|---|---|
| Size | 29.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
44bf30c15c6812657663ccbbafb3221912938431c25544bbccc09a88f4edf9ca
|
|
BLAKE2b-256 checksum How to use checksums |
a7b8af6abcf532f193b9c7274f0c64a24eac9e2d631639a4c32796ae5fef263f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6
|
Security for pywisp-emibcn 0.0.11
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.