Skip to main content

A Python library to interact with the LibreNMS API (v0)

Project description

LibreNMS handler

PyPI image Black Pylint CodeQL

A Python library to interact with the LibreNMS API (v0).

The project aims to provide the user with as much information as if they were looking at the reference guide themselves.

I have not used it myself, so I cannot endorse it, but a quick search shows that LibreNMSAPI has a similar goal with a different outlook. Consider checking it out if this project doesn't suit your needs!

Usage

The package is installed with the following package managers like so:

Pip

pip install librenms-handler

Pipenv

pipenv install librenms-handler

The following statement will initialise the chosen endpoint:

from librenms_handler.devices import Devices

librenms_devices = Devices(
    'https://librenms.example.com',
    'e4ef9234abab59a90628dd3f616a60b4'
)

NOTE: If you are using a self-signed certificate for your server, you can bypass the errors by passing the initialisation option verify=False.

Once done, a list of methods will be available to you such as librenms_handler.list_devices(). Upon operation, the method will execute and return the required request to your LibreNMS instance.

>>> librenms_devices.add_device('test_device', snmp_disable=True, force_add=True)
{'status': 'ok', 'message': 'Device test_device (13) has been added successfully'}
>>> librenms_devices.del_device('test')
{'status': 'ok', 'devices': [{'device_id': 13, 'inserted': '2021-03-13 15:56:19', 'hostname': 'test_device', 'sysName': '', 'ip': None, 'overwrite_ip': None, 'community': '', 'authlevel': None, 'authname': None, 'authpass': None, 'authalgo': None, 'cryptopass': None, 'cryptoalgo': None, 'snmpver': 'v2c', 'port': 161, 'transport': 'udp', 'timeout': None, 'retries': None, 'snmp_disable': 1, 'bgpLocalAs': None, 'sysObjectID': None, 'sysDescr': None, 'sysContact': None, 'version': None, 'hardware': '', 'features': None, 'location_id': None, 'os': 'ping', 'status': True, 'status_reason': '', 'ignore': 0, 'disabled': 0, 'uptime': None, 'agent_uptime': 0, 'last_polled': None, 'last_poll_attempted': None, 'last_polled_timetaken': None, 'last_discovered_timetaken': None, 'last_discovered': None, 'last_ping': None, 'last_ping_timetaken': None, 'purpose': None, 'type': 'server', 'serial': None, 'icon': 'images/os/ping.svg', 'poller_group': 0, 'override_sysLocation': 0, 'notes': None, 'port_association_mode': 1, 'max_depth': 0, 'disable_notify': 0, 'location': None, 'lat': None, 'lng': None, 'attribs': [], 'vrf_lite_cisco': []}], 'message': 'Removed device test_device\n', 'count': 1}

The output is exactly the same as if you were using Curl to make the requests.

Should you wish to use any other endpoint, the situation would be the same: from librenms_handler.endpoint import Endpoint

Environment variables

While initialising the handler, the following parameters are required. The handler first checks for the following environment variables, should you choose to use them.

Environment variable Description Type Example
LIBRENMS_URL Full URL to the target LibreNMS instance string https://librenms.example.com
LIBRENMS_TOKEN Token generated from LIBRENMS_URL/api-access string e4ef9234abab59a90628dd3f616a60b4

Endpoints

While I will likely never have reason to fully complete all endpoints, the progress of such is shown below: See Projects to track the progress of the endpoints.

Endpoint Started Done
Alerts False
ARP True True
Bills False
Device Groups True True
Devices True True
Inventory True True
Locations True True
Logs True True
Port Groups False
Ports False
Routing False
Services False
Switching False
System True True

Collaboration

The project has no complex logic behind it - all you need to do is read the API docs and follow the existing code structure. All code should be formatted by Black before submission and adhere to Pylint recommendations where reasonable.

By following these standards, the code should be easy for people from all skill-sets to help out!

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

librenms-handler-0.3.0.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

librenms_handler-0.3.0-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file librenms-handler-0.3.0.tar.gz.

File metadata

  • Download URL: librenms-handler-0.3.0.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for librenms-handler-0.3.0.tar.gz
Algorithm Hash digest
SHA256 835652511a6c30f19572a350c527121a9d925b96cfaa8da94962aa46d8327d2a
MD5 2f9324d0bb4b61d30fe91065efd5f66f
BLAKE2b-256 2dea0d05951b10c6f95784379159be72a3c761372e70a41000a32103cbeb439b

See more details on using hashes here.

File details

Details for the file librenms_handler-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: librenms_handler-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for librenms_handler-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 592bfed209382b310123e2a21e494559d634bd4e520ac52e8e68e4cc43879aa0
MD5 e60650649e157401124803f2185f87bf
BLAKE2b-256 bcae9fdb94701e5c8b634e3ba846522a30481f91923e53a12cb438b6a12ed2d0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page