Metadata-Version: 2.4
Name: linuxfabrik-lib
Version: 2.4.0
Summary: Python libraries used in various Linuxfabrik projects, including the 'Linuxfabrik Monitoring Plugins' project.
Author-email: "Linuxfabrik GmbH, Zurich, Switzerland" <info@linuxfabrik.ch>
Project-URL: Homepage, https://github.com/Linuxfabrik/lib
Project-URL: Documentation, https://github.com/Linuxfabrik/lib/blob/master/README.md
Project-URL: Source, https://github.com/Linuxfabrik/lib
Project-URL: Tracker, https://github.com/Linuxfabrik/lib/issues
Project-URL: Download, https://github.com/Linuxfabrik/lib/releases
Keywords: lib,libs,monitoring,monitoring plugins,icinga,nagios
Classifier: Development Status :: 6 - Mature
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Healthcare Industry
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Manufacturing
Classifier: Intended Audience :: Other Audience
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: OSI Approved :: The Unlicense (Unlicense)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System
Classifier: Topic :: System :: Monitoring
Classifier: Topic :: System :: Networking :: Monitoring
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: beautifulsoup4
Requires-Dist: lxml
Requires-Dist: netifaces
Requires-Dist: psutil
Requires-Dist: pymysql
Requires-Dist: PySmbClient
Requires-Dist: smbprotocol
Requires-Dist: xmltodict
Dynamic: license-file

# Linuxfabrik's Python Libraries

These Python libraries are used in several Linuxfabrik projects, including the [Linuxfabrik Monitoring Plugins project](https://github.com/Linuxfabrik/monitoring-plugins). Requires Python 3.6+ (default Python version on RHEL 8).


## Installation

`pip install linuxfabrik-lib`


## Documentation

[API Documentation](https://linuxfabrik.github.io/lib/) (hosted on GitHub Pages).

The HTML documentation is created using [https://pdoc.dev/](https://pdoc.dev/):

```
pip install pdoc
pdoc --output-dir docs \
    args.py \
    base.py \
    cache.py \
    db_mysql.py \
    db_sqlite.py \
    disk.py \
    distro.py \
    dmidecode.py \
    feedparser.py \
    globals.py \
    grassfish.py \
    huawei.py \
    human.py \
    icinga.py \
    infomaniak.py \
    jitsi.py \
    keycloak.py \
    lftest.py \
    librenms.py \
    net.py \
    nodebb.py \
    powershell.py \
    psutil.py \
    qts.py \
    redfish.py \
    rocket.py \
    shell.py \
    smb.py \
    time.py \
    txt.py \
    uptimerobot.py \
    url.py \
    veeam.py \
    version.py \
    wildfly.py \
    winrm.py
```


## Library Index

* args.py:  
Extends argparse by new input argument data types on demand.

* base.py:  
Provides very common every-day functions.

* cache.py:  
Simple Cache in the form of a Key-Value Store (KVS) like Redis, based on SQLite, optionally supporting expiration of keys. No detailed error handling here. If the cache does not work, we (currently) don't report the reason and simply return `False`.

* db_mysql.py:  
Library for accessing MySQL/MariaDB servers.

* db_sqlite.py:  
Library for accessing SQLite databases.

* disk.py:  
Offers file and disk related functions, like getting a list of partitions, grepping a file, etc.

* distro.py:  
Provides information about the Linux distribution it runs on, such as a reliable machine-readable distro ID and "os_family" (known from Ansible).

* dmidecode.py:  
Library for parsing information from dmidecode. Have a look at `man dmidecode` for details about dmidecode.

* endoflifedate.py:  
This library stores information from https://endoflife.date/api/ for offline usage and therefore needs to be updated periodically when version checks don't have access to the Internet.

* feedparser.py:  
Parse Atom and RSS feeds in Python.

* globals.py:  
This library defines the global plugin states, based on the POSIX spec of returning a positive value and just like in `monitoring-plugins/plugins-scripts/utils.sh.in`, except that we do not make use of `STATE_DEPENDENT`.

* grassfish.py:  
Provides functions using the Grassfish REST-API.

* huawei.py:  
This library collects some Huawei related functions that are needed by Huawei check plugins.

* human.py:  
Functions to convert raw numbers, times etc. to a human readable representation (and sometimes back).

* icinga.py:  
This module tries to make accessing the Icinga2 API easier.

* infomaniak.py:  
Provides functions using the Infomanik REST-API.

* jitsi.py:  
This library collects some Jitsi related functions that are needed by more than one Jitsi plugin.

* keycloak.py:  
This library collects some Keycloak related functions that are needed by more than one Keycloak plugin.

* lftest.py:  
Provides test functions for unit tests.

* librenms.py:  
This library collects some LibreNMS related functions that are needed by LibreNMS check plugins.

* net.py:  
Provides network related functions and variables.

* nodebb.py:  
This library collects some NodeBB related functions that are needed by more than one NodeBB plugin.

* powershell.py:  
This library collects some Microsoft PowerShell related functions.

* psutil.py:  
Wrapper library for functions from psutil.

* redfish.py:  
This library parses data returned from the Redfish API.

* rocket.py:  
This library collects some Rocket.Chat related functions that are needed by more than one Rocket.Chat plugin.

* shell.py:  
Communicates with the Shell.

* smb.py:  
Provides functions to establish native SMB connections.

* time.py:  
Provides datetime functions.

* txt.py:  
A collection of text functions.

* uptimerobot.py:  
Interacts with the UptimeRobot API.

* url.py:  
Get for example HTML or JSON from an URL.

* veeam.py:  
This library interacts with the Veeam Enterprise Manager API.

* version.py:  
Provides functions for handling software versions.

* wildfly.py:  
This library collects some WildFly/JBoss related functions that are needed by more than one WildFly/JBoss plugin.

* winrm.py:  
This library collects some Microsoft WinRM related functions.


## Tips & Tricks

* Counts the function calls to any "lib" library in your project and sorts the results by frequency in descending order:  
  `grep -rhoP '\Wlib\.[a-zA-Z0-9_\.]+' * | sed 's/^[^a-zA-Z0-9]*//' | sort | uniq -c | sort -nr`
