Skip to content
Snippets Groups Projects
Commit af1c1137 authored by Hahn Axel (hahn)'s avatar Hahn Axel (hahn)
Browse files

updatte check_systemdunit

parent 84b4fb05
No related branches found
No related tags found
1 merge request!162check_http first lines
This commit is part of merge request !162. Comments created here will be created in the context of that merge request.
...@@ -3,23 +3,14 @@ ...@@ -3,23 +3,14 @@
# #
# CHECK A SINGLE SYSTEMD SERVICE # CHECK A SINGLE SYSTEMD SERVICE
# #
# (1)
# shows overview of important services - edit check_systemdservices.cfg to define
# them
#
# (2)
# resturns
# - OK if all systemd servises are running
# - UNKNOWN if systemctl command is not available
# - ERROR if any systemd service is not running
#
# ------------------------------------------------------------------------------- # -------------------------------------------------------------------------------
# 2023-09-05 v01.0 <axel.hahn@unibe.ch> # 2023-09-05 v1.0 <axel.hahn@unibe.ch>
# 2020-09-08 v1.1 <axel.hahn@unibe.ch> add params -s, -l
# ================================================================================ # ================================================================================
. $( dirname $0 )/inc_pluginfunctions . $( dirname $0 )/inc_pluginfunctions
export self_APPVERSION=1.0 export self_APPVERSION=1.1
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# FUNCTIONS # FUNCTIONS
...@@ -37,16 +28,24 @@ The status is unknown if the command systemctl is not found. ...@@ -37,16 +28,24 @@ The status is unknown if the command systemctl is not found.
The status is critical if the service does not exist or is not running. The status is critical if the service does not exist or is not running.
SYNTAX: SYNTAX:
$_self [-h] UNIT $_self [-h|-l|-s] UNIT
OPTIONS: OPTIONS:
-h this help -h this help
-l list all units
-s list service units
UNIT Name of a unit - see output of 'systemctl' UNIT Name of a unit - see output of 'systemctl'
EXAMPLES: EXAMPLES:
$_self mysql.service $_self -s
show status of service mysql list all existing services. For a unit check you need to add the name
in the 1st column.
$_self nginx.service
show status of nginx webservice
EOF EOF
} }
...@@ -64,8 +63,31 @@ fi ...@@ -64,8 +63,31 @@ fi
ph.require "systemctl" ph.require "systemctl"
_service="${1}" # --- list all units
_status=$( systemctl --no-pager -l status "${_service}" 2>&1 ) if ph.hasParamoption "l" "$@" ; then
echo "List of all systemd units:"
echo
_list=$( systemctl --no-legend --no-pager )
for mytype in $( awk '{ print $1 }' <<< "$_list" | grep '\.' | rev| cut -f 1 -d '.' | rev | grep -v '[^a-z]' | sort -u )
do
echo "---------- $mytype"
grep "\.${mytype}" <<< "$_list"
echo
done
exit 0
fi
# --- list service units
if ph.hasParamoption "s" "$@" ; then
echo "List of service units:"
echo
systemctl --no-legend --no-pager --type service
exit 0
fi
# --- check given unit
_unit="${1}"
_status=$( systemctl --no-pager -l status "${_unit}" 2>&1 )
if ! grep "Active: active (running) " <<< "${_status}" >/dev/null; then if ! grep "Active: active (running) " <<< "${_status}" >/dev/null; then
ph.setStatus critical ph.setStatus critical
......
...@@ -16,7 +16,7 @@ A unit is everything listed by systemctl command - services, timers, targets, .. ...@@ -16,7 +16,7 @@ A unit is everything listed by systemctl command - services, timers, targets, ..
______________________________________________________________________ ______________________________________________________________________
CHECK_SYSTEMDUNIT CHECK_SYSTEMDUNIT
v1.0 v1.1
(c) Institute for Medical Education - University of Bern (c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3 Licence: GNU GPL 3
...@@ -30,21 +30,53 @@ The status is unknown if the command systemctl is not found. ...@@ -30,21 +30,53 @@ The status is unknown if the command systemctl is not found.
The status is critical if the service does not exist or is not running. The status is critical if the service does not exist or is not running.
SYNTAX: SYNTAX:
check_systemdunit [-h] UNIT check_systemdunit [-h|-l|-s] UNIT
OPTIONS: OPTIONS:
-h this help -h this help
-l list all units
-s list service units
UNIT Name of a unit - see output of 'systemctl' UNIT Name of a unit - see output of 'systemctl'
EXAMPLES: EXAMPLES:
check_systemdunit mysql.service check_systemdunit -s
show status of service mysql list all existing services. For a unit check you need to add the name
in the 1st column.
check_systemdunit nginx.service
show status of nginx webservice
``` ```
## Examples ## Examples
### List services
You maybe want to start to get a list of services to pick an existing one that you wanna check periodically.
You can use ``systemctl --no-legend --no-pager --type service`` or ``$ ./check_systemdunit -s``
```txt
List of service units:
alsa-restore.service loaded active exited Save/Restore Sound Card State
apparmor.service loaded active exited Load AppArmor profiles
avahi-daemon.service loaded active running Avahi mDNS/DNS-SD Stack
bluetooth.service loaded active running Bluetooth service
clamav-daemon.service loaded active running Clam AntiVirus userspace daemon
clamav-freshclam.service loaded active running ClamAV virus database updater
colord.service loaded active running Manage, Install and Generate Color Profiles
cronie.service loaded active running Periodic Command Scheduler
...
```
### Check a service
To check a single service you need to add the unit name in the 1st column.
``$ ./check_systemdunit nginx`` returns ``$ ./check_systemdunit nginx`` returns
```txt ```txt
...@@ -67,3 +99,7 @@ If a service does not exist: ``./check_systemdunit justadummy`` returns ...@@ -67,3 +99,7 @@ If a service does not exist: ``./check_systemdunit justadummy`` returns
```txt ```txt
CRITICAL: Unit justadummy.service could not be found. CRITICAL: Unit justadummy.service could not be found.
``` ```
### Other units
With ``$ ./check_systemdunit -l`` you get a grouped list of all unit types. check_systemdunit handles all types - not only services.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment