https://github.com/stdevel/check_uyuni_currency
A Nagios / Icinga plugin for checking patch currency of hosts managed by Uyuni or SUSE Multi-Linux Manager
https://github.com/stdevel/check_uyuni_currency
icinga icinga-plugin nagios suse-manager suse-multi-linux-manager system-information system-update uyuni
Last synced: 8 months ago
JSON representation
A Nagios / Icinga plugin for checking patch currency of hosts managed by Uyuni or SUSE Multi-Linux Manager
- Host: GitHub
- URL: https://github.com/stdevel/check_uyuni_currency
- Owner: stdevel
- License: gpl-3.0
- Created: 2016-10-14T14:38:16.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2025-08-25T12:58:08.000Z (9 months ago)
- Last Synced: 2025-08-25T14:29:07.744Z (9 months ago)
- Topics: icinga, icinga-plugin, nagios, suse-manager, suse-multi-linux-manager, system-information, system-update, uyuni
- Language: Python
- Homepage:
- Size: 37.1 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# check_uyuni_currency
`check_uyuni_currency` is a Nagios / Icinga plugin for checking patch currency of hosts managed by Uyuni or SUSE Multi-Linux Manager.
The script checks the patch currency of one or multiple systems. The following information are gathered:
- Outstanding package update counter per category:
- critical
- important
- moderate
- low
- enhancement
- bug fix
- system currency score
To gather these information a valid username / password combination to your management system is required. The login credentials **are prompted** when running the script. To automate this you have two options:
## Setting shell variables
The following shell variables are used:
- `UYUNI_LOGIN` - a username
- `UYUNI_PASSWORD` - the appropriate password
You might also want to set the `HISTFILE` variable (*depending on your shell*) to hide the command including the password in the history:
```command
$ HISTFILE="" UYUNI_LOGIN=mylogin UYUNI_PASSWORD=mypass ./check_uyuni_currency.py -S giertz.stankowic.loc
```
## Using an authfile
A better possibility is to create a authfile with permisions **0600**. Just enter the username in the first line and the password in the second line and hand the path to the script:
```command
$ ./check_uyuni_currency.py -a myauthfile -S giertz.stankowic.loc
```
## Requirements
The plugin requires the `xmlrpclic` module which is shipped with `rhnlib`.
A minimum API version of 24 is required - the script checks the API version and aborts if you are using a historic version of Uyuni.
## Usage
By default, the script checks a particular system or multiple systems for outstanding bug fixes and critical updates (*combining critical, important and also moderate patch metrics*). It is possible to control this behaviour by specifying additional parameters (*see below*).
The script also support performance data for data visualization.
The following parameters can be specified:
| Parameter | Description |
|:----------|:------------|
| `-d` / `--debug` | enable debugging outputs (*default: no*) |
| `-h` / `--help` | shows help and quits |
| `-P` / `--show-perfdata` | enables performance data (*default: no*) |
| `-a` / `--authfile` | defines an auth file to use instead of shell variables |
| `-s` / `--server` | defines the server to use (*default: localhost*) |
| `-k` / `--insecure` | disables SSL verification (*default: no*) |
| `-S` / `--system` | defines one or multiple system(s) to check |
| `-A` / `--all-systems` | checks all registered systems - USE WITH CAUTION (*default: no*) |
| `-t` / `--total-warning` | defines total package update warning threshold (*default: empty*) |
| `-T` / `--total-critical` | defines total package update critical threshold (*default: empty*) |
| `-i` / `--important-warning` | defines security package (*critical, important and moderate security fixes*) update warning threshold (*default: 10*) |
| `-I` / `--important-critical` | defines security package (*critical, important and moderate security fixes*) update warning threshold (*default: 20*) |
| `-b` / `--bugs-warning` | defines bug package update warning threshold (*default: 25*) |
| `-B` / `--bugs-critical` | defines bug package update warning threshold (*default: 50*) |
| `-y` / `--generic-statistics` | checks for inactive and outdated system statistic metrics (*default :no*) |
| `-u` / `--outdated-warning` | defines outdated systems warning percentage threshold (*default: 50*) |
| `-U` / `--outdated-critical` | defines outdated systems critical percentage threshold (*default: 80*) |
| `-n` / `--inactive-warning` | defines inactive systems warning percentage threshold (*default: 10*) |
| `-N` / `--inactive-critical` | defines inactive systems critical percentage threshold (*default: 50*) |
| `--version` | prints programm version and quits |
## Examples
The following example checks a single system on the local Uyuni server:
```command
$ ./check_uyuni_currency.py -S giertz.stankowic.loc
Username: admin
Password:
OK: critical updates okay (0), bug fixes okay (0) for giertz.stankowic.loc
```
Checking multiple systems on a remote Uyuni server, authentication using authfile:
```command
$ ./check_uyuni_currency.py -s st-uyuni02.stankowic.loc -a uyuni.auth -S giertz.stankowic.loc -S shittyrobots.test.loc
OK: giertz.stankowic.loc critical updates okay (0)critical updates okay (0), shittyrobots.test.loc bug fixes okay (0)shittyrobots.test.loc bug fixes okay (0)
```
Checking a single host on a local Uyuni installation, also checking total updates, enabling performance data:
```command
$ ./check_uyuni_currency.py -S giertz.stankowic.loc -t 20 -T 40 -P
Username: admin
Password:
OK: total updates okay (0), critical updates okay (0), bug fixes okay (0) for giertz.stankowic.loc | 'crit_pkgs'=0;10;20;; 'imp_pkgs'=0;10;20;; 'mod_pkgs'=0;10;20;; 'low_pkgs'=0;;;; 'enh_pkgs'=0;;;; 'bug_pkgs'=0;25;50;; 'score'=0;;;;
```
When specifying multiple systems along with performance data, the metric names will get prefix according to the particular host:
```command
$ ./check_uyuni_currency.py -S giertz.stankowic.loc -S shittyrobots.test.loc -a uyuni.auth -P
OK: shittyrobots.test.loc critical updates okay (0)giertz.stankowic.loc critical updates okay (0), shittyrobots.test.loc bug fixes okay (0)giertz.stankowic.loc bug fixes okay (0) | 'shittyrobots.test.loc_crit_pkgs'=0;10;20;; 'shittyrobots.test.loc_imp_pkgs'=0;10;20;; 'shittyrobots.test.loc_mod_pkgs'=0;10;20;; 'shittyrobots.test.loc_low_pkgs'=0;;;; 'shittyrobots.test.loc_enh_pkgs'=0;;;; 'shittyrobots.test.loc_bug_pkgs'=0;25;50;; 'shittyrobots.test.loc_score'=0;;;;'giertz.stankowic.loc_crit_pkgs'=0;10;20;; 'giertz.stankowic.loc_imp_pkgs'=0;10;20;; 'giertz.stankowic.loc_mod_pkgs'=0;10;20;; 'giertz.stankowic.loc_low_pkgs'=0;;;; 'giertz.stankowic.loc_enh_pkgs'=0;;;; 'giertz.stankowic.loc_bug_pkgs'=0;25;50;; 'giertz.stankowic.loc_score'=0;;;;
```
Checking generic statistics of an Uyuni system:
```command
$ ./check_uyuni_currency.py -a uyuni.auth -y -P
OK: outdated systems okay (0), inactive systems okay (0) | 'sys_total'=9;;;; 'sys_outdated'=9;5;8;; 'sys_inact'=0;1;5;;
```