Skip to content
Snippets Groups Projects
Select Git revision
  • 4323e6770ebd5af065f5fc0d61ec51b2bb97c664
  • master default protected
  • simple-task/7248-eol-check-add-node-22
  • 6877_check_iml_deployment
4 results

check_reboot_required

Blame
  • 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
    
    # ----------------------------------------------------------------------