#!/bin/bash # Version 1.3 # # v1.3 CHANGES: # - Added check for configured apoache-user and basepath exist. # v1.2 CHANGES: # - Updated nextcloud release check to actually get latest version from the release-url # v1.1 CHANGES: # - Updated query for installed version to versionstring instead of version # # WARNING: Current logic in the check will report wrong version as upgrade when a release is withdrawn from a/the release-url. # Installation: # This file should be place on a/the nextcloud host in /usr/lib/check_mk_agent/local # Also do not forget to make this file executable with chmod +x /usr/lib/check_mk_agent/local/nextcloud-updates.sh # RELEASEURL="https://download.nextcloud.com/server/releases/" #basepath of Nextcloud's occ executable BASEPATH="/var/www/html" # set the correct user for running the commands ( either apache or www-data, this depends on your Linux-Distribution) APACHEUSER="apache" # check if jq package is present on the system /usr/bin/which jq >/dev/null 2>&1 if [ $? -ne 0 ]; then echo "2 \"NextCloud\" - NextCloud localcheck requires jq package to be installed" echo "2 \"NextCloud Apps\" - NextCloud localcheck requires jq package to be installed" exit; fi # check if configured apache user exists if ! id -u "$APACHEUSER" >/dev/null 2>&1; then echo "2 \"NextCloud\" - NextCloud localcheck webserver user does not exist, check configuration!" echo "2 \"NextCloud Apps\" - NextCloud localcheck webserver user does not exist, check configuration!" exit; fi # check if configured basepath exists if [ ! -d "$BASEPATH" ]; then echo "2 \"NextCloud\" - NextCloud localcheck could not find configured basepath, check configuration!" echo "2 \"NextCloud Apps\" - NextCloud localcheck could not find configured basepath, check configuration!" exit; fi # Get current installed Nextcloud version-information # in v29.x.x version gives more detail, which is not given by the check on installed version, so switched to versionstring instead. NCINSTALLED=$(sudo -u $APACHEUSER php $BASEPATH/occ status --output=json | jq -r '.versionstring') # Get latest avaiable version information # In v29.x.x this has changed outputs , NCAVAILABLE=$(curl -s $RELEASEURL | sed -e 's/<[^>]*>//g' | grep -o "^nextcloud.*.zip" | tail -n1 | cut -d'-' -f 2 | sed 's/.\{4\}$//') # compare resuts of installed and available version and report update available if they differ if [ $NCINSTALLED != $NCAVAILABLE ]; then echo "1 \"NextCloud\" - A new NextCloud version ($NCAVAILABLE)is available, running version $NCINSTALLED please upgrade" else sudo -u $APACHEUSER php $BASEPATH/occ status -e if [ $? -eq 0 ]; then echo "0 \"NextCloud\" - NextCloud all up to date" elif [ $? -eq 1 ]; then echo "1 \"NextCloud\" - NextCloud maintenance-mode is enabled" elif [ $? -eq 2 ]; then echo "2 \"NextCloud\" - NextCloud Core needs updating" fi fi APPRESULT=$(sudo -u $APACHEUSER php $BASEPATH/occ app:update --showonly) if [[ $APPRESULT == *"All apps are up-to-date"* ]]; then echo "0 \"NextCloud Apps\" - NextCloud Apps all up to date" else UPDATECOUNT=$(echo "$APPRESULT" | wc -l) echo "1 \"NextCloud Apps\" - $UPDATECOUNT NextCloud Apps requires updates" fi