Skip to main content

Coverage Python CI Build Status

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 a good logging system.
  • Enhance logging system
  • Create examples repo with one wisp.py example
  • 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)

Source distribution for pywisp-emibcn 0.0.11
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)

Table of built distributions (wheels) for pywisp-emibcn 0.0.11
File Interpreter ABI Platform Actions
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.

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