| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #!/bin/bash
- # (c) Michael Honkoop <mhonkoop@comsolve.nl>
- # License: GNU General Public License v2
- # Version 0.1:
- # - initial release
- # Version 0.2
- # - adapted state for checking required packages for the check
- # Version 0.3
- # - changed output to CheckMK regarding version information when no update available.
- # Version 0.4
- # - updated/aligned comments and added more (descriptive) comments to routines
- # Current active version of the script
- SCRIPT_VERSION=0.4
- # Installation:
- # This file should be placed on a/the host running SimpleSamlPHP in /usr/lib/check_mk_agent/local
- #
- # (reccomended) 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 at least once an hour, preferrably once a day to minimize processing cost.
- # ..and to avoid a http 403 from querying github too often.
- #
- # Also do not forget to make this file executable with chmod +x /usr/lib/check_mk_agent/local/simplesaml_version_check
- ##########################################################################
- # Global definitions for the script - change if needed to fit your needs #
- ##########################################################################
- # Define path to where SimpleSalmPHP is installed
- BASEPATH="/opt/simplesamlphp"
- # Version (json) file reference
- VERSION_FILE="composer.json"
- # url to check releases against
- RELEASEURL="https://api.github.com/repos/simplesamlphp/simplesamlphp/releases"
- # Service Name to be shown in Check_MK
- SERVICE="SimpleSAMLphp_Version"
- #####################################################################
- # DO NOT CHANGE BELOW UNLESS YOU EXACTLY KNOW WHAT YOU ARE DOING #
- #####################################################################
- # Check if jq package is present on the system (required for this check)
- if ! command -v jq >/dev/null 2>&1; then
- echo "3 \"$SERVICE\" - $SERVICE localcheck requires jq package to be installed"
- exit 0
- fi
- # Check if curl package is present on the system (required for this check)
- if ! command -v curl >/dev/null 2>&1; then
- echo "3 \"$SERVICE\" - $SERVICE localcheck requires curl package to be installed"
- exit 0
- fi
- # Check presence of SimpleSAMLPhp and report if not found
- if [[ ! -f "$BASEPATH/$VERSION_FILE" ]]; then
- echo "3 \"$SERVICE\" - No local version information found in: $$BASEPATH/$VERSION_FILE check localcheck configuration."
- exit 0
- fi
- # Get installed version information via composer.json or version file
- if [ -f "$BASEPATH/$VERSION_FILE" ]; then
- INSTALLED_VERSION=$(jq -r '.version // empty' "$BASEPATH/$VERSION_FILE")
- # Strip leading 'v' from retrieved version information
- INSTALLED_VERSION="${INSTALLED_VERSION#v}"
- else
- # Fallback to checking directory name if version isn't in composer.json
- INSTALLED_VERSION="Unknown"
- fi
- # Get latest avaiable version information from github.
- AVAILABLE_VERSION=$(curl -fsSL -H 'Accept: application/vnd.github+json' --connect-timeout 5 --max-time 15 "$RELEASEURL" | jq -r '.[] | select(.draft == false and .prerelease == false) | .tag_name' | sed 's/^v//' | sort -V | tail -n1)
- # Error handling / Evaluate results
- if [ -z "$AVAILABLE_VERSION" ]; then
- # Set WARN state when failing to fetch data from GitHub.
- echo "1 \"$SERVICE\" - Could not fetch the latest version from GitHub API."
- exit 0
- elif [ "$VERSION_FILE" = "Unknown" ]; then
- # Set WARN state when local/installed version could not be determined.
- echo "1 \"$SERVICE\" - Cannot detect installed version in $VERSION_FILE."
- exit 0
- elif [ "$INSTALLED_VERSION" = "$AVAILABLE_VERSION" ]; then
- # Set OK state when installed and latest release version match.
- echo "0 \"$SERVICE\" - SimpleSAMLphp is up to date ($AVAILABLE_VERSION)."
- exit 0
- else
- # Set WARN state when an update is available
- echo "1 \"$SERVICE\" - Update available! Installed: $INSTALLED_VERSION, Available: $AVAILABLE_VERSION."
- exit 0
- fi
|