#!/usr/bin/env bash ################################################################ # copy this script to /etc/snmp/ and make it executable: # # chmod +x /etc/snmp/os-updates.sh # # ------------------------------------------------------------ # # edit your snmpd.conf and include: # # extend osupdate /opt/os-updates.sh # #--------------------------------------------------------------# # restart snmpd and activate the app for desired host # #--------------------------------------------------------------# # please make sure you have the path/binaries below # ################################################################ BIN_WC='/usr/bin/wc' BIN_GREP='/bin/grep' CMD_GREP='-c' CMD_WC='-l' BIN_ZYPPER='/usr/bin/zypper' CMD_ZYPPER='-q lu' BIN_YUM='/usr/bin/yum' CMD_YUM='-q check-update' BIN_DNF='/usr/bin/dnf' CMD_DNF='-q check-update' BIN_APT='/usr/bin/apt-get' CMD_APT='-qq -s upgrade' BIN_PACMAN='/usr/bin/pacman' CMD_PACMAN='-Sup' ################################################################ # Don't change anything unless you know what are you doing # ################################################################ if [ -f $BIN_ZYPPER ]; then # OpenSUSE UPDATES=`$BIN_ZYPPER $CMD_ZYPPER | $BIN_WC $CMD_WC` if [ $UPDATES -ge 2 ]; then echo $(($UPDATES-2)); else echo "0"; fi elif [ -f $BIN_DNF ]; then # Fedora UPDATES=`$BIN_DNF $CMD_DNF | $BIN_WC $CMD_WC` if [ $UPDATES -ge 1 ]; then echo $(($UPDATES-1)); else echo "0"; fi elif [ -f $BIN_PACMAN ]; then # Arch UPDATES=`$BIN_PACMAN $CMD_PACMAN | $BIN_WC $CMD_WC` if [ $UPDATES -ge 1 ]; then echo $(($UPDATES-1)); else echo "0"; fi elif [ -f $BIN_YUM ]; then # CentOS / Redhat UPDATES=`$BIN_YUM $CMD_YUM | $BIN_WC $CMD_WC` if [ $UPDATES -ge 1 ]; then echo $(($UPDATES-1)); else echo "0"; fi elif [ -f $BIN_APT ]; then # Debian / Devuan / Ubuntu UPDATES=`$BIN_APT $CMD_APT | $BIN_GREP $CMD_GREP 'Inst'` if [ $UPDATES -ge 1 ]; then echo $UPDATES; else echo "0"; fi else echo "0"; fi