Files
nrpe/files/nrpe/check_uptime
T
Ludovic Cartier 467ff2bf28 uptime - add override command
Co-authored-by: Copilot <copilot@github.com>
2026-05-04 14:50:29 +02:00

67 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
# Nagios Exit Codes
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
# Default values
warn=1440
crit=30
OVERRIDE_FILE="/var/lib/nagios/uptime_override"
# Retrieve arguments
RESET=0
while getopts "w:c:f:r" opt; do
case $opt in
w) warn=$OPTARG ;;
c) crit=$OPTARG ;;
f) OVERRIDE_FILE=$OPTARG ;; # Permet de changer le chemin via Icinga
r) RESET=1 ;;
*) echo "Usage: $0 [-w <minutes>] [-c <minutes>] [-f <file_path>] [-r]"; exit $STATE_UNKNOWN ;;
esac
done
# Option reset : crée le fichier d'override avec les bons droits
if [ "$RESET" -eq 1 ]; then
touch "$OVERRIDE_FILE" && chmod 640 "$OVERRIDE_FILE" && chown nagios:nagios "$OVERRIDE_FILE"
if [ $? -eq 0 ]; then
echo "OK - Override file created: $OVERRIDE_FILE"
exit $STATE_OK
else
echo "UNKNOWN - Failed to create override file: $OVERRIDE_FILE"
exit $STATE_UNKNOWN
fi
fi
# Extract uptime (in seconds) via /proc
uptime_seconds=$(cat /proc/uptime | awk '{print $1}' | cut -d. -f1)
uptime_min=$((uptime_seconds / 60))
# Performance Data
PERFDATA="|uptime_min=${uptime_min}min;${warn};${crit};0;"
# 1. Vérification du fichier d'acquittement
if [ -f "$OVERRIDE_FILE" ]; then
# Si le système est redevenu "stable" naturellement, on supprime le flag
if [ "$uptime_min" -gt "$warn" ]; then
rm -f "$OVERRIDE_FILE"
else
echo "OK - Reboot acquitté manuellement (Uptime: ${uptime_min} min)$PERFDATA"
exit $STATE_OK
fi
fi
# 2. Logique de décision standard
if [ "$uptime_min" -le "$crit" ]; then
echo "CRITICAL - Recent reboot detected (${uptime_min} min < threshold ${crit} min)$PERFDATA"
exit $STATE_CRITICAL
elif [ "$uptime_min" -le "$warn" ]; then
echo "WARNING - Uptime low (${uptime_min} min < threshold ${warn} min)$PERFDATA"
exit $STATE_WARNING
else
echo "OK - System stable (Uptime: ${uptime_min} min)$PERFDATA"
exit $STATE_OK
fi