From b01ae6630417686f4bd7022bf76a16e8d9e07bae Mon Sep 17 00:00:00 2001 From: Chl Date: Sat, 6 Mar 2021 18:15:14 +0100 Subject: [PATCH] nagios: file-age: add min-size + well needed explanation... --- nagios/check_file_age.sh | 52 ++++++++++++++++++++++++++++------------ 1 file changed, 37 insertions(+), 15 deletions(-) diff --git a/nagios/check_file_age.sh b/nagios/check_file_age.sh index b342996..5b52a13 100755 --- a/nagios/check_file_age.sh +++ b/nagios/check_file_age.sh @@ -8,6 +8,7 @@ RANGE_WARNING_AGE="7" RANGE_CRITICAL_AGE="30" RANGE_WARNING_FILES_NUMBER="1:" RANGE_CRITICAL_FILES_NUMBER="1:" +MIN_SIZE="0c" FIND_BASEDIR="/" # Output @@ -31,7 +32,7 @@ set -e usage() { cat </dev/null 2>&1 ; then echo "UNKNOWN 'find' not found." exit 1 fi +if ! which tr >/dev/null 2>&1 ; then + echo "UNKNOWN 'tr' not found (not mandatory, remove perfdata if you wish)." + exit 1 +fi # # Gestion des paramètres # -while getopts hw:c:W:C:b:f: f; do +while getopts hw:c:W:C:s:b:f: f; do case "$f" in 'h') usage @@ -99,6 +114,10 @@ while getopts hw:c:W:C:b:f: f; do fi ;; + 's') + MIN_SIZE="$OPTARG" + ;; + 'b') # TODO : vérifier que le répertoire existe ? FIND_BASEDIR="$OPTARG" @@ -109,16 +128,21 @@ while getopts hw:c:W:C:b:f: f; do # un buffer et de le traiter ensuite FIND_NAME_REGEXP="$OPTARG" - # mémo : 'label'=value[UOM];[warn];[crit];[min];[max] - #OUTPUT_PERFDATA=$( printf "%s'port%d'=%d;%s;%s;0;" \ - # "$( test -n "$OUTPUT_PERFDATA" && echo "$OUTPUT_PERFDATA " )" \ - # "$PORT_NUMBER" \ - # "$CPT" \ - # "$RANGE_WARNING" \ - # "$RANGE_CRITICAL" ) + FILES_NUMBER_AT_WARN_AGE="$( find "$FIND_BASEDIR" -name "$FIND_NAME_REGEXP" -type f \( -size "$MIN_SIZE" -or -size "+$MIN_SIZE" \) -mtime "-$RANGE_WARNING_AGE" -printf "a\n" | wc -l )" + FILES_NUMBER_AT_CRIT_AGE="$( find "$FIND_BASEDIR" -name "$FIND_NAME_REGEXP" -type f \( -size "$MIN_SIZE" -or -size "+$MIN_SIZE" \) -mtime "-$RANGE_CRITICAL_AGE" -printf "a\n" | wc -l )" - FILES_NUMBER_AT_WARN_AGE="$( find "$FIND_BASEDIR" -name "$FIND_NAME_REGEXP" -type f -mtime "-$RANGE_WARNING_AGE" -printf "a\n" | wc -l )" - FILES_NUMBER_AT_CRIT_AGE="$( find "$FIND_BASEDIR" -name "$FIND_NAME_REGEXP" -type f -mtime "-$RANGE_CRITICAL_AGE" -printf "a\n" | wc -l )" + # mémo : 'label'=value[UOM];[warn];[crit];[min];[max] + OUTPUT_PERFDATA=$( printf "%s'warn%s'=%d;%s;;0;" \ + "$( test -n "$OUTPUT_PERFDATA" && echo "$OUTPUT_PERFDATA " )" \ + "$( echo "$FIND_BASEDIR:$FIND_NAME_REGEXP" | LANG=C tr -cd "a-zA-Z/_.-" )" \ + "$FILES_NUMBER_AT_WARN_AGE" \ + "$RANGE_WARNING_FILES_NUMBER" ) + #"$RANGE_CRITICAL_FILES_NUMBER" ) + OUTPUT_PERFDATA=$( printf "%s'crit%s'=%d;;%s;0;" \ + "$( test -n "$OUTPUT_PERFDATA" && echo "$OUTPUT_PERFDATA " )" \ + "$( echo "$FIND_BASEDIR:$FIND_NAME_REGEXP" | LANG=C tr -cd "a-zA-Z/_.-" )" \ + "$FILES_NUMBER_AT_CRIT_AGE" \ + "$RANGE_CRITICAL_FILES_NUMBER" ) #"$RANGE_WARNING_FILES_NUMBER" \ if check_range "$FILES_NUMBER_AT_CRIT_AGE" "$RANGE_CRITICAL_FILES_NUMBER" ; then OUTPUT_EXIT_STATUS=2 @@ -153,8 +177,6 @@ case "$OUTPUT_EXIT_STATUS" in ;; esac -# (pas de perfdata dans ce script) -#printf "|%s\n" "$OUTPUT_PERFDATA" -printf "\n" -# on supprime les retours à la ligne +printf "|%s\n" "$OUTPUT_PERFDATA" + exit $OUTPUT_EXIT_STATUS