diff --git a/configure_snmpd.yml b/configure_snmpd.yml index 8a4b4a2..a74c228 100644 --- a/configure_snmpd.yml +++ b/configure_snmpd.yml @@ -10,10 +10,12 @@ name: snmpd - name: Get osupdate script - shell : echo "#!/usr/bin/env bash\n################################################################\n# copy this script to /etc/snmp/ and make it executable #\n# chmod +x /etc/snmp/osupdate #\n# ------------------------------------------------------------ #\n# edit your snmpd.conf and include: #\n# extend osupdate /etc/snmp/osupdate #\n#--------------------------------------------------------------#\n# restart snmpd and activate the app for desired host #\n#--------------------------------------------------------------#\n# please make sure you have the path/binaries below #\n################################################################\nBIN_WC='/usr/bin/env wc'\nBIN_GREP='/usr/bin/env grep'\nCMD_GREP='-c'\nCMD_WC='-l'\nBIN_ZYPPER='/usr/bin/env zypper'\nCMD_ZYPPER='-q lu'\nBIN_YUM='/usr/bin/env yum'\nCMD_YUM='-q check-update'\nBIN_DNF='/usr/bin/env dnf'\nCMD_DNF='-q check-update'\nBIN_TDNF='/usr/bin/env tdnf'\nCMD_TDNF='-q check-update'\nBIN_APT='/usr/bin/env apt-get'\nCMD_APT='-qq -s upgrade'\nBIN_PACMAN='/usr/bin/env pacman'\nCMD_PACMAN='-Sup'\nBIN_CHECKUPDATES='/usr/bin/env checkupdates'\nBIN_PKG='/usr/sbin/pkg'\nCMD_PKG=' audit -q -F'\nBIN_APK='/sbin/apk'\nCMD_APK=' version'\n# If using this as a agent and not a extend, uncomment the line below.\n#echo '<<>>'\n################################################################\n# Don't change anything unless you know what are you doing #\n################################################################\nif command -v zypper &>/dev/null ; then\n # OpenSUSE\n # shellcheck disable=SC2086\n UPDATES=$($BIN_ZYPPER $CMD_ZYPPER | $BIN_WC $CMD_WC)\n if [ "$UPDATES" -ge 2 ]; then\n echo $(($UPDATES-2));\n else\n echo "0";\n fi\nelif command -v dnf &>/dev/null ; then\n # Fedora\n # shellcheck disable=SC2086\n UPDATES=$($BIN_DNF $CMD_DNF | $BIN_WC $CMD_WC)\n if [ "$UPDATES" -ge 1 ]; then\n echo $(($UPDATES-1));\n else\n echo "0";\n fi\nelif command -v tdnf &>/dev/null ; then\n # PhotonOS\n # shellcheck disable=SC2086\n UPDATES=$($BIN_TDNF $CMD_TDNF | $BIN_WC $CMD_WC)\n if [ "$UPDATES" -ge 1 ]; then\n echo "$UPDATES";\n else\n echo "0";\n fi\nelif command -v pacman &>/dev/null ; then\n # Arch\n # calling pacman -Sup does not refresh the package list from the mirrors,\n # thus it is not useful to find out if there are updates. Keep the pacman call\n # to accomodate users that do not have it. checkupdates is in pacman-contrib.\n # also enables snmpd to collect this information if it's not run as root\n if command -v checkupdates &>/dev/null ; then\n # shellcheck disable=SC2086\nUPDATES=$($BIN_CHECKUPDATES | $BIN_WC $CMD_WC) \n else \n # shellcheck disable=SC2086 \n UPDATES=$($BIN_PACMAN $CMD_PACMAN | $BIN_WC $CMD_WC) \n fi \n if [ "$UPDATES" -ge 1 ]; then \n echo $(($UPDATES-1)); \n else \n echo "0"; \n fi \nelif command -v yum &>/dev/null ; then \n # CentOS / Redhat \n # shellcheck disable=SC2086 \n UPDATES=$($BIN_YUM $CMD_YUM | $BIN_WC $CMD_WC) \n if [ "$UPDATES" -ge 1 ]; then \n echo $(($UPDATES-1)); \n else \n echo "0"; \n fi \nelif command -v apt-get &>/dev/null ; then \n # Debian / Devuan / Ubuntu \n # shellcheck disable=SC2086 \n UPDATES=$($BIN_APT $CMD_APT | $BIN_GREP $CMD_GREP 'Inst') \n if [ "$UPDATES" -ge 1 ]; then \n echo "$UPDATES"; \n else \n echo "0"; \n fi \nelif command -v pkg &>/dev/null ; then \n # FreeBSD \n # shellcheck disable=SC2086 \n UPDATES=$($BIN_PKG $CMD_PKG | $BIN_WC $CMD_WC) \n if [ "$UPDATES" -ge 1 ]; then \n echo "$UPDATES"; \n else \n echo "0"; \n fi \nelif command -v apk &>/dev/null ; then \n # Alpine \n # shellcheck disable=SC2086 \n UPDATES=$($BIN_APK $CMD_APK | $BIN_WC $CMD_WC) \n if [ "$UPDATES" -ge 2 ]; then \n echo $(($UPDATES-1)); \n else \n echo "0"; \n fi \nelse \n echo "0"; \nfi" > /etc/snmp/osupdate + ansible.builtin.copy: + src: osupdate + dest: /etc/snmp - name: Configure snmpd - shell : echo "agentAddress udp:161,udp6:[::1]:161\nrocommunity public default -V systemonly\nrwcommunity manage 192.168.1.30\nrwcommunity manage localhost\nrocommunity6 public default -V systemonly\nsysLocation SDA Corporation/Internet Server/\nsysContact thedarty@gmail.com\nextend osupdate /etc/snmp/osupdate" > /etc/snmp/snmpd.conf + shell: echo "agentAddress udp:161,udp6:[::1]:161\nrocommunity public default -V systemonly\nrwcommunity manage 192.168.1.30\nrwcommunity manage localhost\nrocommunity6 public default -V systemonly\nsysLocation SDA Corporation/Internet Server/\nsysContact thedarty@gmail.com\nextend osupdate /etc/snmp/osupdate" > /etc/snmp/snmpd.conf - name: Restart snmpd.service - shell : systemctl restart snmpd.service + shell: systemctl restart snmpd.service diff --git a/osupdate b/osupdate new file mode 100644 index 0000000..cfda057 --- /dev/null +++ b/osupdate @@ -0,0 +1,124 @@ +#!/usr/bin/env bash +################################################################ +# copy this script to /etc/snmp/ and make it executable: # +# chmod +x /etc/snmp/osupdate # +# ------------------------------------------------------------ # +# edit your snmpd.conf and include: # +# extend osupdate /etc/snmp/osupdate # +#--------------------------------------------------------------# +# restart snmpd and activate the app for desired host # +#--------------------------------------------------------------# +# please make sure you have the path/binaries below # +################################################################ +BIN_WC='/usr/bin/env wc' +BIN_GREP='/usr/bin/env grep' +CMD_GREP='-c' +CMD_WC='-l' +BIN_ZYPPER='/usr/bin/env zypper' +CMD_ZYPPER='-q lu' +BIN_YUM='/usr/bin/env yum' +CMD_YUM='-q check-update' +BIN_DNF='/usr/bin/env dnf' +CMD_DNF='-q check-update' +BIN_TDNF='/usr/bin/env tdnf' +CMD_TDNF='-q check-update' +BIN_APT='/usr/bin/env apt-get' +CMD_APT='-qq -s upgrade' +BIN_PACMAN='/usr/bin/env pacman' +CMD_PACMAN='-Sup' +BIN_CHECKUPDATES='/usr/bin/env checkupdates' +BIN_PKG='/usr/sbin/pkg' +CMD_PKG=' audit -q -F' +BIN_APK='/sbin/apk' +CMD_APK=' version' + +# If using this as a agent and not a extend, uncomment the line below. +#echo '<<>>' + +################################################################ +# Don't change anything unless you know what are you doing # +################################################################ +if command -v zypper &>/dev/null ; then + # OpenSUSE + # shellcheck disable=SC2086 + UPDATES=$($BIN_ZYPPER $CMD_ZYPPER | $BIN_WC $CMD_WC) + if [ "$UPDATES" -ge 2 ]; then + echo $(($UPDATES-2)); + else + echo "0"; + fi +elif command -v dnf &>/dev/null ; then + # Fedora + # shellcheck disable=SC2086 + UPDATES=$($BIN_DNF $CMD_DNF | $BIN_WC $CMD_WC) + if [ "$UPDATES" -ge 1 ]; then + echo $(($UPDATES-1)); + else + echo "0"; + fi +elif command -v tdnf &>/dev/null ; then + # PhotonOS + # shellcheck disable=SC2086 + UPDATES=$($BIN_TDNF $CMD_TDNF | $BIN_WC $CMD_WC) + if [ "$UPDATES" -ge 1 ]; then + echo "$UPDATES"; + else + echo "0"; + fi +elif command -v pacman &>/dev/null ; then + # Arch + # calling pacman -Sup does not refresh the package list from the mirrors, + # thus it is not useful to find out if there are updates. Keep the pacman call + # to accomodate users that do not have it. checkupdates is in pacman-contrib. + # also enables snmpd to collect this information if it's not run as root + if command -v checkupdates &>/dev/null ; then + # shellcheck disable=SC2086 + UPDATES=$($BIN_CHECKUPDATES | $BIN_WC $CMD_WC) + else + # shellcheck disable=SC2086 + UPDATES=$($BIN_PACMAN $CMD_PACMAN | $BIN_WC $CMD_WC) + fi + if [ "$UPDATES" -ge 1 ]; then + echo $(($UPDATES-1)); + else + echo "0"; + fi +elif command -v yum &>/dev/null ; then + # CentOS / Redhat + # shellcheck disable=SC2086 + UPDATES=$($BIN_YUM $CMD_YUM | $BIN_WC $CMD_WC) + if [ "$UPDATES" -ge 1 ]; then + echo $(($UPDATES-1)); + else + echo "0"; + fi +elif command -v apt-get &>/dev/null ; then + # Debian / Devuan / Ubuntu + # shellcheck disable=SC2086 + UPDATES=$($BIN_APT $CMD_APT | $BIN_GREP $CMD_GREP 'Inst') + if [ "$UPDATES" -ge 1 ]; then + echo "$UPDATES"; + else + echo "0"; + fi +elif command -v pkg &>/dev/null ; then + # FreeBSD + # shellcheck disable=SC2086 + UPDATES=$($BIN_PKG $CMD_PKG | $BIN_WC $CMD_WC) + if [ "$UPDATES" -ge 1 ]; then + echo "$UPDATES"; + else + echo "0"; + fi +elif command -v apk &>/dev/null ; then + # Alpine + # shellcheck disable=SC2086 + UPDATES=$($BIN_APK $CMD_APK | $BIN_WC $CMD_WC) + if [ "$UPDATES" -ge 2 ]; then + echo $(($UPDATES-1)); + else + echo "0"; + fi +else + echo "0"; +fi \ No newline at end of file