Port the live LibreNMS monitoring patterns from the legacy
KNELServerBuild repo into oam/librenms-agent/, joining the existing
OAM tooling (oxidized, unpoller, smokeping, netdisco):
- agent/ — upstream check_mk agent + snmp-extend scripts (dmi, dpkg,
mysql, ntp-client, ntp-server, os-updates, postfix, raspberry, smart,
ss, ups-nut), copied verbatim (md5-verified), never to be edited here
- setup.sh — deploy module ported from ProjectCode/Modules/OAM/
oam-librenms.sh; only the legacy framework bootstrap was replaced
with plain bash (path constants + print_info -> echo)
- snmp-sudo.conf — Debian snmpd sudo rule the extends require
(Debian-snmp NOPASSWD /bin/cat); carried as a file only, sudoers
install is a policy decision per AGENTS.md
Lint gates: extend the existing upstream-skip mechanism for the
verbatim agent scripts (tests/shellcheck.sh + check-rules.sh prune,
same precedent as archive/provisioning/Agents/librenms), and fix the
stale skip path there (provisioning/ moved to archive/provisioning in
6244c1c; the bash extends have been failing the whole-repo shellcheck
gate since).
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
74 lines
2.2 KiB
Bash
74 lines
2.2 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
|