SkillAgentSearch skills...

Lib

Python 3.6+ modules for Linuxfabrik projects: DB access, SQLite KVS caching, WinRM, SMB, shell execution, 15+ API integrations (Icinga2, Veeam, Nextcloud, ...). Available on PyPI.

Install / Use

/learn @Linuxfabrik/Lib

README

<h1 align="center"> Linuxfabrik Python Libraries </h1> <p align="center"> Python 3.6+ modules for Linuxfabrik projects: DB access, SQLite KVS caching, WinRM, SMB, shell execution, 15+ API integrations (Icinga2, Veeam, Nextcloud, ...). Available on PyPI. <span>&#8226;</span> <b>made by <a href="https://linuxfabrik.ch/">Linuxfabrik</a></b> </p> <div align="center">

GitHub Stars License Version PyPI Python GitHub Issues GitHubSponsors PayPal

</div> <br />

Linuxfabrik Python Libraries

A mature, production-grade Python library collection providing 35+ modules with 300+ functions for system administration, monitoring, and infrastructure automation. These libraries are used across several Linuxfabrik projects -- most prominently the Linuxfabrik Monitoring Plugins (Nagios/Icinga check plugins), but also in ChecklistFabrik and other tools.

The library requires Python 3.6+ (the default Python version on RHEL 8) and runs on every platform.

Installation

Add linuxfabrik-lib as a dependency to your project, or install it manually:

pip install --user linuxfabrik-lib

Documentation

Full API documentation is available at linuxfabrik.github.io/lib. It is automatically built and deployed on every push to main.

Design Principles

These libraries are built with a clear set of priorities:

  • Procedural by design. The libraries deliberately use a procedural/functional style rather than object-oriented programming. Pure functions with explicit inputs and outputs are easier to read, test, and reason about. This is especially true for the most prominent use case -- monitoring plugins -- which are short-lived, linear processes with no complex state to manage over time, where unnecessary abstraction layers would add overhead without tangible benefit.
  • Broad compatibility. Python 3.6+ is the minimum, ensuring the libraries work on RHEL 8 and every major distribution without requiring newer runtimes.
  • Cross-platform. Core functions behave identically on Linux, Windows, and macOS. Platform-specific code (WinRM, PowerShell, SMB) is cleanly separated.
  • Minimal dependencies. We avoid pulling in large dependency trees. External packages are used only when the alternative would be unreliable or significantly more complex.
  • Consistent error handling. Most functions return (success, result) tuples. The caller decides whether to continue or exit -- the library never exits on its own. The base.coe() ("Continue or Exit") helper makes this pattern concise.
  • Automatic redaction. Sensitive data (passwords, tokens, API keys) in error messages is automatically sanitized before output.
  • Nagios/Icinga conventions. State constants, threshold evaluation, performance data formatting, and range parsing follow the Monitoring Plugins Development Guidelines.
  • Defensive defaults. Functions use sensible timeouts, safe SSL settings, and locked-down defaults so that plugins work out of the box without extensive configuration.

Library Index

Core Utilities

| Module | Description | Key Functions | |--------|-------------|---------------| | args.py | Extends argparse with custom input types for monitoring thresholds and common parameters. | csv(), float_or_none(), int_or_none(), number_unit_method() | | base.py | The central library for plugin development. Provides state evaluation, threshold comparison, performance data formatting, ASCII table output, and the coe() error-handling pattern. | coe(), get_perfdata(), get_state(), get_table(), get_worst(), match_range(), oao(), state2str() | | globals.py | Defines the four Nagios/Icinga plugin states: STATE_OK (0), STATE_WARN (1), STATE_CRIT (2), STATE_UNKNOWN (3). | -- | | human.py | Converts raw numbers and durations to human-readable representations and back. Supports binary/SI prefixes and Nagios range syntax with units. | bytes2human(), human2bytes(), seconds2human(), human2seconds(), number2human() | | lftest.py | Test harness for running plugin unit tests against expected STDOUT/STDERR output files. | test() | | time.py | Date/time conversions between UNIX epochs, ISO strings, datetime objects, and weekday names. Timezone-aware. | epoch2iso(), now(), timestr2epoch(), timestrdiff(), utc_offset() | | txt.py | Text processing: encoding conversion, regex compilation, substring extraction, multi-line parsing, sensitive data redaction, and pluralization. | sanitize_sensitive_data(), extract_str(), mltext2array(), to_text(), to_bytes() | | version.py | Software version parsing, comparison, and End-of-Life checking against endoflife.date. | check_eol(), version(), version2float() |

Data Access & Caching

| Module | Description | Key Functions | |--------|-------------|---------------| | cache.py | A simple SQLite-based key-value store with optional key expiration. Used for persisting state between plugin runs. | get(), set() | | db_mysql.py | MySQL/MariaDB client with connection management, query execution, and privilege checking. | connect(), select(), check_select_privileges() | | db_sqlite.py | Full SQLite interface: table/index creation, CRUD operations, CSV import, regex support, and automatic load computation for time-series data. | connect(), select(), insert(), create_table(), compute_load(), import_csv() |

System & OS

| Module | Description | Key Functions | |--------|-------------|---------------| | disk.py | File I/O, directory walking, CSV/environment file parsing, partition listing, device-mapper resolution, and file ownership lookup. | read_file(), walk_directory(), grep_file(), read_csv(), get_real_disks() | | distro.py | Linux distribution detection. Returns normalized facts including distribution name, version, and Ansible-compatible os_family. | get_distribution_facts() | | dmidecode.py | Parses dmidecode output into structured data. Extracts CPU, RAM, firmware, serial number, manufacturer, and model information. | get_data(), cpu_type(), ram(), manufacturer(), model(), serno() | | endoflifedate.py | Bundled End-of-Life data from endoflife.date for offline version checks when internet access is unavailable. | -- | | psutil.py | Wrapper around psutil for retrieving mounted disk partitions with device, mount point, and filesystem type. | get_partitions() | | shell.py | Subprocess execution with pipeline support, regex filtering, configurable locale, and timeout handling. Works on Linux and Windows. | shell_exec(), get_command_output() |

Networking & HTTP

| Module | Description | Key Functions | |--------|-------------|---------------| | feedparser.py | Parses Atom and RSS feeds from URLs using BeautifulSoup. | parse() | | net.py | Low-level networking: TCP/UDP sockets, SSL connections, Unix domain sockets, public IP lookup, hostname validation, and CIDR conversion. | fetch(), fetch_ssl(), fetch_socket(), get_public_ip(), is_valid_hostname() | | url.py | HTTP client for fetching HTML, JSON, or raw data. Supports GET/POST, Basic/Digest authentication, SSL/TLS options, custom headers, and proxy control. | fetch(), fetch_json(), get_latest_version_from_github(), strip_tags() |

Windows Integration

| Module | Description | Key Functions | |--------|-------------|---------------| | powershell.py | Executes PowerShell commands locally (on Windows hosts). | run_ps() | | smb.py | Native SMB/CIFS file access: list, glob, and open files on remote shares with encryption support. | glob(), open_file() | | winrm.py | Executes commands and PowerShell scripts on remote Windows hosts via WinRM. Supports Kerberos, NTLM, CredSSP, and JEA (Just Enough Administration). | run_cmd(), run_ps() |

API Integrations

| Module | Description | Key Functions | |--------|-------------|---------------| | grassfish.py | Grassfish digital signage REST API. | fetch_json() | | huawei.py | Huawei storage system status parsing (controller models, health, LED status). | get_controller_model() | | icinga.py | Icinga2 REST API client for querying services, setting acknowledgements, and managing downtimes. | get_service(), set_ack(), set_downtime(), remove_downtime() | | infomaniak.py | Infomaniak Swiss Backup REST API for events and backup products. | get_events(), get_swiss_backup_products() | | jitsi.py | Jitsi Meet server statistics API. | get_data() | | keycloak.py | Keycloak identity provider API with OIDC discovery and admin token management. | discover_oidc_endpoints(), obtain_admin_token(), get_data() | | librenms.py | LibreNMS monitoring API with state conversion. | get_data() | | nextcloud.py | Nextcloud OCC command execution. | `run_occ(

View on GitHub
GitHub Stars16
CategoryOperations
Updated1d ago
Forks7

Languages

Python

Security Score

95/100

Audited on Mar 31, 2026

No findings