check_reboot_required 2.87 KiB
#!/bin/bash
# ======================================================================
#
# NAGIOS CLIENT CHECK :: is a restart required?
#
# ----------------------------------------------------------------------
# works for sure on
# - centos7,8
# - debian6..10
# - ubuntu10,12
# ----------------------------------------------------------------------
# 2016-08-12 added ouput of packages
# 2020-03-05 v1.2 <axel.hahn@iml.unibe.ch> switch to ph.* helper functions
# 2022-10-14 v1.3 <axel.hahn@unibe.ch> fix debian output if /var/run/reboot-required.pkgs does not exist
# Shellfixes; add help
# 2023-03-29 v1.4 <martin.gasser@unibe.ch> add almalinux as distro
# ======================================================================
. $(dirname $0)/inc_pluginfunctions
self_APPNAME=$( basename $0 | tr [:lower:] [:upper:] )
self_APPVERSION=1.3
distro=$( ph.getOS )
# ----------------------------------------------------------------------
# functions
# ----------------------------------------------------------------------
function showHelp(){
cat <<EOF
______________________________________________________________________
$self_APPNAME
v$self_APPVERSION
(c) Institute for Medical Education - University of Bern
Licence: GNU GPL 3
______________________________________________________________________
Check if a reboot is required.
It works for Centos and Debian/ Ubuntu.
If the reboot is required:
* On Centos it shows the kernel number that will be installed,
* On Debian/ Ubuntu it shows the packages that require the reboot,
SYNTAX:
$(basename $0)
OPTIONS:
-h or --help show this help.
PARAMETERS:
None.
EXAMPLE:
$(basename $0)
EOF
}
# ----------------------------------------------------------------------
# --- check param -h
case "$1" in
"--help"|"-h")
showHelp
exit 0
;;
*)
esac
case $distro in
"centos"|"almalinux")
currentkernel=$(uname -r)
out=$(rpm -q --last kernel | head -1 | grep -F $currentkernel)
if [ -z "$out" ]; then
ph.setStatus "warning"
ph.status "[$distro] need to reboot for kernel $(rpm -q --last kernel | head -1) (current: $currentkernel)"
else
ph.status "[$distro] no reboot required (kernel is up to date: $currentkernel)"
fi
;;
"debian"|"ubuntu")
if [ ! -f /var/run/reboot-required ]; then
ph.status "[$distro] no reboot required"
else
byPackages="(I do not know the package that requires it)"
test -f /var/run/reboot-required.pkgs && byPackages="by $( tr '\n' ',' < /var/run/reboot-required.pkgs )"
ph.setStatus "warning"
ph.status "[$distro] $( cat /var/run/reboot-required ) ${byPackages}"
fi
;;
*)
ph.abort "UNKNOWN: distro [$distro] was detected but is not supported (yet)."
;;
esac
ph.exit
# ----------------------------------------------------------------------