Files
KNELIAC/roles/oam/files/librenms/os-updates.sh
T
mrcharles 962a8f197d [#454] adopt enforcement framework + STATUS; modernize librenms agent scripts
check-rules green; shellcheck fixes to dpkg.sh/os-updates.sh (legacy
backticks, unquoted vars, array-quoted command builders); Discourse
pointers added to basis docs; awx/k8s/compliance repos referenced.
https://projects.knownelement.com/issues/454
2026-09-05 05:35:44 -05:00

74 lines
2.3 KiB
Bash

#!/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