Claude Code Prompt: RZ Diagnose-Script
Verwendung
cd /path/to/ozmai
claude
Dann diesen Prompt einfügen:
Der Prompt
Schreibe ein interaktives Bash-Diagnose-Script für RZ-Admins.
Dateiname: rz_diagnose.sh
Das Script erkennt die klassischen RZ-Probleme automatisch
und gibt pro Befund eine farbige Ausgabe mit Handlungsempfehlung.
## Anforderungen
### Erkennungs-Checks (alle automatisch, keine User-Eingabe nötig)
1. DISK: /var Auslastung
- Warnung bei > 80%, Kritisch bei > 90%
- Bei Treffer: du -sh /var/* | sort -rh | head -10
- Zeige Top-Verursacher
- Empfehlung: truncate / logrotate / lvextend
2. LOAD: System Load vs CPU-Kerne
- Warnung bei Load > CPU-Kerne × 1.5
- Kritisch bei Load > CPU-Kerne × 3
- Bei Treffer: top -b -n 1 | head -20
- %wa (iowait) separat anzeigen
- Empfehlung: MySQL PROCESSLIST prüfen / iostat
3. MYSQL: Slow Queries und Locks
- Nur wenn MySQL läuft (mysql --connect-timeout=2)
- SHOW PROCESSLIST: Queries > 30s anzeigen
- Threads_connected vs max_connections in %
- Slow Query Log aktiv? Wenn nein: Hinweis
- Empfehlung: EXPLAIN / Index prüfen
4. SSH: Brute-Force Erkennung
- Failed password Einträge in letzter Stunde
- Warnung bei > 100, Kritisch bei > 1000
- Top 5 Angreifer-IPs anzeigen
- Erfolgreiche Logins in letzter Stunde (kritisch!)
- fail2ban Status wenn installiert
- Empfehlung: iptables / PasswordAuthentication no
5. DISK I/O: Engpass
- iostat wenn verfügbar (sysstat Paket)
- %util > 80% = Warnung
- Zeige Top-I/O-Prozess (iotop -b -n 1 wenn verfügbar)
- Empfehlung: iotop / lsof / MySQL Buffer Pool
6. MEMORY: RAM und Swap
- Swap-Nutzung > 20% = Warnung, > 60% = Kritisch
- Zeige Top-5 RAM-Verbraucher
- Empfehlung: Dienste prüfen / RAM erweitern
7. FAIL2BAN: Status
- Installiert und aktiv?
- Wenn nicht: Hinweis mit Installationsbefehl
8. EOL-Check: PHP und MySQL Versionen
- PHP Version erkennen
- MySQL/MariaDB Version erkennen
- EOL-Versionen markieren:
PHP 7.2 → EOL Nov 2020
PHP 7.4 → EOL Nov 2022
MySQL 5.7 → EOL Okt 2023
- Empfehlung: Migration
## Output-Format
Farbschema:
✓ GRÜN → alles ok
⚠ GELB → Warnung, Handlung empfohlen
✗ ROT → Kritisch, sofortige Handlung
ℹ BLAU → Information
Struktur pro Check:
════════════════════════════════
[DISK] /var Auslastung
════════════════════════════════
✗ KRITISCH: /var ist zu 94% voll (9.4G / 10G)
Top-Verursacher:
7.9G /var/log/syslog
180M /var/log/syslog.1
12M /var/log/auth.log
Empfehlung:
→ truncate -s 0 /var/log/syslog
→ systemctl kill -s HUP rsyslog
→ logrotate -f /etc/logrotate.d/rsyslog
→ Langfristig: lvextend -r -L +5G /dev/vg0/lv_var
## Distro-Erkennung
Das Script muss automatisch erkennen:
Debian / Ubuntu → auth.log, journalctl -u sshd
RHEL / Rocky → /var/log/secure, journalctl -u sshd
Arch → journalctl -u sshd
FreeBSD → /var/log/auth.log, service sshd status
kein systemctl! kein journalctl!
Distro-Erkennung via:
/etc/os-release → Linux
uname -s → FreeBSD
## Zusammenfassung am Ende
Nach allen Checks:
════════════════════════════════
ZUSAMMENFASSUNG
════════════════════════════════
Checks gesamt: 8
OK: 5 ✓
Warnungen: 2 ⚠
Kritisch: 1 ✗
Kritische Probleme:
→ [DISK] /var zu 94% voll
Warnungen:
→ [SSH] 847 Brute-Force Versuche in letzter Stunde
→ [EOL] PHP 7.2 ist End of Life seit Nov 2020
## Optionen
Script soll folgende Flags unterstützen:
--quiet nur Warnungen und Kritische ausgeben
--json Output als JSON (für Monitoring-Integration)
--check MODUL nur einen Check ausführen
z.B.: --check disk
--check mysql
--check ssh
## Sicherheit
- Script läuft als normaler User soweit möglich
- MySQL-Checks: versuchen ohne Passwort (socket auth)
wenn fehlschlägt: überspringen mit Hinweis
- Keine Passwörter im Script
- Keine destruktiven Befehle – nur lesen und anzeigen
## Ausgabe
Speichere das fertige Script als: rz_diagnose.sh
Mache es ausführbar: chmod +x rz_diagnose.sh
Erstelle zusätzlich: rz_diagnose_README.md
mit: Installation, Verwendung, Beispiel-Output
Nach dem Script
# Script testen:
bash rz_diagnose.sh
bash rz_diagnose.sh --quiet
bash rz_diagnose.sh --check disk
bash rz_diagnose.sh --check mysql
bash rz_diagnose.sh --json
# In ozmai ingestieren:
# Quellenname: rz_diagnose_README.md
# Channel: #klassiker
# → ozmai kennt dann das Script und erklärt es
# Testfragen:
# "Was prüft rz_diagnose.sh beim MySQL-Check?"
# "Wie erkenne ich mit dem Script einen Brute-Force?"
# "Was bedeutet --json beim Diagnose-Script?"
Erweiterungen (v0.2)
Nach erstem Test:
→ cron: Script stündlich laufen lassen, Output in #laufend ingestieren
→ webhook: bei Kritisch → Slack/Matrix Benachrichtigung
→ history: letzten Run vergleichen → "neu seit letztem Check"
→ CVE-Modul: Version erkennen → NVD API abfragen → bekannte CVEs