Skip to content

Navigation Menu

Sign in
Sign up

Repository files navigation

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...

About

Access AirControl2 (API), AirOS (SSH) & Mikrotik (SSH) from the same place

Topics

Resources

Stars

10 stars

Watchers

4 watching

Forks

Releases

Used by

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /