123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- #!/bin/bash
- # (c) Michael Honkoop <mhonkoop@comsolve.nl>
- # License: GNU General Public License v2
- # Version 0.1 (initial release)
- #
- # Version 0.2
- # Updated output to have updateable compontents comma-sepoarated.
- #
- # Version 0.3
- # Removed a duplicate routine, and added more comments
- # Installation:
- # This file should be placed on a/the DirectAdmin host in /usr/lib/check_mk_agent/local
- #
- # (optional) if you want the check to run on a different schedule (like once per hour) put it in a subdirectory of above path
- # named to the number of seconds of the interval wanted, so 3600/ for once an hour, 86400 for once per day.
- # Suggestion for this check is to run this once a day to minimize processing cost.
- #
- # Also do not forget to make this file executable with chmod +x /usr/lib/check_mk_agent/local/direactadmin.sh
- ##########################################################################
- # Global definitions for the script - change if needed to fit your needs #
- ##########################################################################
- # Custombuild switch , set to 1 if you are using it.
- CustomBuild=1
- #####################################################################
- # DO NOT CHANGE BELOW UNLESS YOU EXACTLY KNOW WHAT YOU ARE DOING #
- #####################################################################
- # Define global path of directAdmin
- if [ $CustomBuild -eq 1 ]
- then
- DirAdmin_Path="/usr/local/directadmin/custombuild"
- else
- DirAdmin_Path="/usr/local/directadmin"
- fi
- # store version information from DirectAdmin packages
- DirectAdmin_Versions_Update=$($DirAdmin_Path/build versions)
- # Define updates Array
- updates=()
- # Iterate over the collected data to find possible updates
- while read -r line; do
- if [[ $line =~ ^Latest\ version\ of\ (.+):\ (.+)$ ]]; then
- component="${BASH_REMATCH[1]}"
- latest="${BASH_REMATCH[2]}"
- elif [[ $line =~ ^Installed\ version\ of\ (.+):\ (.+)$ ]]; then
- installed="${BASH_REMATCH[2]}"
- # Compare versions using sort -V
- if [[ "$(printf '%s\n%s\n' "$installed" "$latest" | sort -V | head -n1)" != "$latest" ]]; then
- updates+=("$component")
- fi
- fi
- done <<< "$DirectAdmin_Versions_Update"
- # Report findings back to CheckMK
- if [[ ${#updates[@]} -eq 0 ]]; then
- echo "0 \"DirectAdmin\" - All DirectAdmin Versions are up to date"
- else
- update_list=$(IFS=,; echo "${updates[*]}")
- echo "1 \"DirectAdmin\" - DirectAdmin Versions ${update_list} have updates"
- fi
|