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

about

Blame
  • yum.sh 3.50 KiB
    #!/bin/bash
    # ===============================================================
    #
    # PACKAGE MANAGER: YUM
    # CentOS
    #
    # included by ../check_packages2install
    #
    # ---------------------------------------------------------------
    # ah <axel.hahn@unibe.ch>
    # 2022-06-03  v1.0  ah  first version
    # 2022-06-07  v1.1  ah  add sudo for yum --bugfix check-update
    #                       rename functions
    # 2022-08-31  v1.2  ah  status line depends on os major version
    # 2023-07-17  v1.3  ah  fix hiding obsolete packages
    # 2023-08-24  v1.4  ah  centos9: update getStatusLine() + getSecurityCount
    # 2023-08-25  v1.5  ah  centos9: fix package lists
    # 2023-09-12  v1.6  ah  almalinux9: fix package lists
    # ===============================================================
    
    
    # ---------------------------------------------------------------
    # command to list of updates
    function yum.getUpdates(){
        sudo /usr/bin/yum -y check-update
    }
    
    # ---------------------------------------------------------------
    # extract list of packages 2 install
    # global  string  packagemanOut  output of update lister command
    function yum.getPackageList(){
        # detect number of line containing "Obsoleting Packages"
        (if grep '^Obsoleting Packages' <<< "$packagemanOut" >/dev/null ; then
          local iStart=1
          local iEnd; typeset -i iEnd
          iEnd=$( echo "$packagemanOut" | grep -n '^Obsoleting Packages' | cut -f 1 -d ':' )-1
          echo "$packagemanOut" | sed -n ${iStart},${iEnd}p
        else
          echo "$packagemanOut"
        fi)  | grep -v "^Last metadata" | grep -i "[a-z]"
    }
    
    # ---------------------------------------------------------------
    # get custom status
    # global  string  packages2install  output of yum.getPackageList() - see ../check_packages2install
    function yum.getStatusLine(){
      local _osversion
      typeset -i _osversion
      _osversion=$( ph.getOSMajor )
    
      case "$_osversion" in
        6|7)
          if ! sudo /usr/bin/yum --bugfix check-update 2>&1 | grep security; then
            echo "No update available (older version v$_osversion). rc = $?"
          fi
          ;;
        8)
          if ! sudo /usr/bin/yum --security check-update 2>&1 | grep "available" ; then
            echo "No update available. rc = $?"
          fi
          ;;
        9)
          local _total; _total=$( echo -n "${packages2install}" | wc -l )
          local _sec;     _sec=$( sudo /usr/bin/yum -y --security check-update \
              | grep -v "^Last" \
              | grep -v "^No security updates needed" \
              | grep -c "[a-z]" 
            )
    
          # create a status line like in former yum versions
          if [ -z "$_sec" ]; then
            echo "No packages needed for security; ${_total} packages available"
          else
            echo "$_sec package(s) needed for security, out of $_total available"
          fi
          ;;
        *)
          echo "see below ... version ${_osversion} not implemented yet..."
          ;;
      esac
    
    
    }
    
    # ---------------------------------------------------------------
    # extract count of critical packages
    # param  string  text to extract critical counter from
    function yum.getSecurityCount(){
      local summary="$1"
      # example outputs:
      # I    No packages needed for security; 223 packages available
      # II   2 package(s) needed for security, out of 237 available
      # III  No security updates needed, but 61 updates available          << centos 8 stream
      # IV   [yum] No packages needed for security; 223 packages available << centos 9
      # V    [yum] 2 package(s) needed for security, out of 237 available  << centos 9
      echo "$summary" | cut -f 2  -d ' ' | sed "s#[^0-9]##g"
    }
    
    # ---------------------------------------------------------------