#!/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 # 2024-03-7 v1.4 <martin.gasser@unibe.ch> add rocky 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"|"rocky") 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 # ----------------------------------------------------------------------