Table of Contents
Check_packages2install
Script: check_packages2install
Check available package updates. Found updates will be shown in groups.
Requirements
- none
Standalone installation
From this repository ypu need next to this script:
-
inc_pluginfunctions
shared function for all IML checks written in bash -
./check_packages2install-data/*
grouping for pakacge names -
./check_packages2install-pkgmanager/*
scruipts to fetch information from apt/ pamac/ yum
Syntax
> ./check_packages2install -h
______________________________________________________________________
CHECK_PACKAGES2INSTALL
v1.12
(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3
https://os-docs.iml.unibe.ch/icinga-checks/Checks/check_packages2install.html
______________________________________________________________________
Get packages that must be updated on this system and show found
packages in groups.
RELATED FILES:
1) For groups and their search filters see files in subdir
check_packages2install-data.
2) In the subdir check_packages2install-pkgmanager are scripts
for supported package managers (with aded ".sh").
OUTPUT:
It returns UNKNOWN if package manager is not supported.
It returns OK if the system is up to date.
It returns WARNING or ERROR if count of found pakackes is greater than
given warn level.
On CentOS it switches to ERROR if a critcal update was found.
Tested operating systems:
- Centos
- Debian
- Manjaro
- Ubuntu
SYNTAX:
check_packages2install [options]
OPTIONS:
-w custom warning level; default: 1
-c custom critical level; default: 200
PARAMETERS:
-h show this help
Additional files
Package manager support
In the subfolder check_packages2install-pkgmanager/
are scripts to read and parse data of different package managers.
- apt.sh - for Debian like systems
- pamac.sh - for Arch linux like systems
- yum.sh - for RedHat like systems
Each file MUST contain minumum the functions
- [packager].getUpdates() - command to list updates
- [packager].getPackageList() - extract list of packages 2 install
These functions are optional:
- [packager].getStatusLine - get custom status line (1st line in output)
- [packager].getSecurityCount - extract count of critical packages from status line
Define groups
To group the packages there are file in subfolder check_packages2install-data/
:
check_packages2install-data
├── 01_OS_base.txt
├── 02_System.txt
├── 10_Programming_languages.txt
├── 10_Webservices.txt
├── 20_Database.txt
└── 50_Custom.txt
The filenames here are the groups. The prefix of number is used to define a sortorder. The number and underscore will be removed in the output.
Define packages per group
The files are simple text files. The rules:
- Each file contains a list of search strings starting in the 1st column.
- Only entrys starting with a letter
[a-zA-Z]
will be used - you can add empty lines or use comments eg. by using a starting#
character. - the search string will be applied starting with the 1st character of the package (like `grep -E “^(line1|line2)”``)
$ cat check_packages2install-data/01_OS_base.txt
basesystem
centos
kernel
linux
ubuntu
$ cat check_packages2install-data/10_Programming_languages.txt
java
python
php
ruby
node
r-
Examples
Simple output
On Manjaro with a single package (group not detected). Pamac has no function pamac.getStatusLine()
- the first line in the output is the default status line.
check_packages2install
WARNING: [pamac] 1 updates
Autoupdate OFF
--- All packages (No package matched a group filter):
1 ventoy 1.0.94-1 -> 1.0.95-1 extra
Total packages to install: 1
|updates-available=1;1;200
Grouped output
Here is a longer example: You see the count of packages per group. Matching search strings of a group will be added in a group section. At the end you get the total and the performace data.
WARNING: [yum] (...)
--- OS_base: 6
1 kernel.x86_64 5.14.0-284.25.1.el9_2 baseos
2 kernel-core.x86_64 5.14.0-284.25.1.el9_2 baseos
3 kernel-modules.x86_64 5.14.0-284.25.1.el9_2 baseos
4 kernel-modules-core.x86_64 5.14.0-284.25.1.el9_2 baseos
5 kernel-tools.x86_64 5.14.0-284.25.1.el9_2 baseos
6 kernel-tools-libs.x86_64 5.14.0-284.25.1.el9_2 baseos
--- System: 8
1 openssh.x86_64 8.7p1-30.el9_2 baseos
2 openssh-clients.x86_64 8.7p1-30.el9_2 baseos
3 openssh-server.x86_64 8.7p1-30.el9_2 baseos
4 openssl.x86_64 1:3.0.7-17.el9_2 baseos
5 openssl-libs.x86_64 1:3.0.7-17.el9_2 baseos
6 sssd-client.x86_64 2.8.2-3.el9_2.alma baseos
7 sssd-common.x86_64 2.8.2-3.el9_2.alma baseos
8 sssd-kcm.x86_64 2.8.2-3.el9_2.alma baseos
--- Other packages: 35
1 NetworkManager.x86_64 1:1.42.2-6.el9_2 baseos
2 NetworkManager-libnm.x86_64 1:1.42.2-6.el9_2 baseos
3 NetworkManager-team.x86_64 1:1.42.2-6.el9_2 baseos
4 NetworkManager-tui.x86_64 1:1.42.2-6.el9_2 baseos
5 bind-libs.x86_64 32:9.16.23-11.el9_2.1 appstream
6 bind-license.noarch 32:9.16.23-11.el9_2.1 appstream
7 bind-utils.x86_64 32:9.16.23-11.el9_2.1 appstream
8 curl.x86_64 7.76.1-23.el9_2.2 baseos
...
33 systemd-pam.x86_64 252-14.el9_2.3 baseos
34 systemd-rpm-macros.noarch 252-14.el9_2.3 baseos
35 systemd-udev.x86_64 252-14.el9_2.3 baseos
Total packages to install: 49
|updates-security=0;1;1 updates-available=49;1;200