46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
import glob
|
|
import re
|
|
|
|
result = {}
|
|
perf_data = []
|
|
|
|
# Cron-Dateien finden
|
|
cron_paths = glob.glob("/etc/cron*/*-auto-snapshot")
|
|
|
|
for path in cron_paths:
|
|
try:
|
|
with open(path, 'r') as f:
|
|
content = f.read()
|
|
label_match = re.search(r'--label=([a-zA-Z]+)', content)
|
|
keep_match = re.search(r'--keep=(\d+)', content)
|
|
if label_match and keep_match:
|
|
label = label_match.group(1)
|
|
keep = int(keep_match.group(1))
|
|
result[label] = keep
|
|
except Exception:
|
|
continue
|
|
|
|
# Wenn leer → CRIT
|
|
if not result:
|
|
print("2 auto_snapshots - No auto-snapshot cron jobs found")
|
|
else:
|
|
status_line = " ".join([f"{k}={v}" for k, v in sorted(result.items())])
|
|
|
|
# Performance-Daten mit Beispiel-Warn-/Krit-Grenzen
|
|
for label, keep in sorted(result.items()):
|
|
if label == "hourly":
|
|
perf_data.append(f"{label}={keep};80;60;0;150")
|
|
elif label == "daily":
|
|
perf_data.append(f"{label}={keep};10;7;0;30")
|
|
elif label == "weekly":
|
|
perf_data.append(f"{label}={keep};4;2;0;10")
|
|
elif label == "monthly":
|
|
perf_data.append(f"{label}={keep};2;1;0;5")
|
|
elif label == "frequent":
|
|
perf_data.append(f"{label}={keep};10;5;0;30")
|
|
else:
|
|
perf_data.append(f"{label}={keep};;;") # Ohne Schwellen
|
|
|
|
print(f"0 auto_snapshots - {status_line} | {' '.join(perf_data)}")
|