#!/bin/bash # (c) Michael Honkoop # License: GNU General Public License v2 # Version 0.1: # - initial release # Version 0.2 # - adapted state for checking required packages for the check # Current active version of the script SCRIPT_VERSION=0.2 # 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 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/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") 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 # Issue 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 # Issue Warn state when local/installed version could not be determined. echo "1 \"$SERVICE\" - Cannot detect installed version at $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 ($VERSION_FILE)." exit 0 else # WARN: Update available echo "1 \"$SERVICE\" - Update available! Installed: $INSTALLED_VERSION, Available: $AVAILABLE_VERSION." exit 0 fi