You've already forked nrpe
467ff2bf28
Co-authored-by: Copilot <copilot@github.com>
67 lines
1.9 KiB
Bash
Executable File
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
|