#!/usr/bin/bash ## V2.0 ## ################################## ## init counts ## ################################## kernel_CNT="0" packages_CNT="0" services_CNT="0" packages_shortname_CNT="0" ## ################################## ## Today's dae is.... ## ################################## TODAY=`date "+%d.%b.%y"` ## ############################################################################# ## file cleanup (old and current and creation of current empty files ## ############################################################################# rm -rf /var/tmp/services.* /var/tmp/packages.* /var/tmp/packages_shortname.* touch /var/tmp/services.${TODAY} /var/tmp/packages.${TODAY} /var/tmp/packages_shortname.${TODAY} ## ################################## ## debug Today is ... $TODAY \n" ## ################################## # ################################################################################ # packages returned by check-update # Thes names of the acturall package to be updated # ################################################################################ yum check-update | egrep ^[a-z] | awk '{print $1}' | cut -d. -f1 | sort -u > /var/tmp/packages.${TODAY} # ################################################################################ # packages to be updated -SHORT NAME # This will make file of package names w/O versions # ################################################################################ cat /var/tmp/packages.${TODAY} | cut -d"-" -f1 |sort -u > /var/tmp/packages_shortname.${TODAY} # ################################################################################ # SERVICES running # These are all systemd sevices that are active and running. # ################################################################################ systemctl --type=service --state=running | egrep service | awk '{print $1}' | cut -d. -f1 | sort -u > /var/tmp/services.${TODAY} services_CNT=`egrep -f Pkg-to-Service.lst /var/tmp/packages.${TODAY}| wc -l` # ##################################################################### ### Compare to Running Services # ##################################################################### # Find the duplicates - if no dups, no reboot # ################################################################################ packages_CNT=`sort /var/tmp/packages.${TODAY} /var/tmp/services.$TODAY |uniq -d | wc -l` # ################################################################################ # Compare to packages runnings as a process - shortname (grep will find more) # ##################################################################### # grep with piece of a package name packages_shortname_CNT=`ps -ef | egrep -v 'abrt|pts|\[' | egrep -f /var/tmp/packages_shortname.${TODAY} | wc -l` ## debug printf "ps -ef | egrep -f /var/tmp/packages-shortname.${TODAY} | wc -l\n" ## debug printf "packages ${packages_CNT} services ${services_CNT} shortname ${packages_shortname_CNT}\n"; # ##################################################################### # a service was found (or close to one) that is being updated # ##################################################################### if [[ ${packages_CNT} -gt 0 || ${services_CNT} -gt 0 || ${packages_shortname_CNT} -gt 0 ]]; then printf "\n\n\n|P${packages_CNT}|S${services_CNT}|RS${packages_shortname_CNT}| Running services or other essential services have been updated, server should be rebooted\n" ps -ef | egrep -f /var/tmp/packages_shortname.${TODAY} | awk '{print " "$8}' | sort -u printf "\n\n" else printf "\n\n Nothing appears to be have been updated that is a service or essential... I suggest a double check...\n" ls -l /var/tmp/services.${TODAY} /var/tmp/packages.${TODAY} /var/tmp/packages_shortname.${TODAY} wc -l /var/tmp/services.${TODAY} /var/tmp/packages.${TODAY} /var/tmp/packages_shortname.${TODAY} fi # ##################################################################### # was there a kernal update ... needs reboot # ##################################################################### kernel_CNT=`egrep kernel /var/tmp/packages.${TODAY} | wc -l` # if there was a kernal update echo that if [[ ${kernel_CNT} -gt 0 ]]; then printf "There are kernel updates, server should be rebooted\n" else printf "There are NO kernel updates!\n" fi