Ontwikkel een Bash of PowerShell Script voor Server Log Analyse en Rapportage
description
Met deze prompt kan de gebruiker een geavanceerd script ontwikkelen dat serverlogbestanden automatisch analyseert en begrijpelijke rapporten opstelt. Dit helpt bij het snel identificeren van problemen, het monitoren van serverprestaties en het verbeteren van de algehele serverstabiliteit, wat efficiënter is dan handmatige loganalyse.
prompt
Help me een Bash of PowerShell script te maken dat serverlogbestanden analyseert en een overzichtelijk rapport genereert met statistieken zoals foutmeldingen, waarschuwingen en gebruikspat ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Hier is een eenvoudig Bash-script dat de logs `/var/log/syslog` en `/var/log/auth.log` analyseert en een overzichtelijk rapport genereert met statistieken over foutmeldingen, waarschuwingen en gebruikspatronen. Het script schrijft de resultaten naar `/var/reports/server_log_report.txt`.
```bash
#!/bin/bash
# Defineer logbestanden en rapportpad
SYSLOG="/var/log/syslog"
AUTHLOG="/var/log/auth.log"
RAPPORT=/var/reports/server_log_report.txt
# Maak rapportdirectory indien niet aanwezig
mkdir -p "$(dirname "$RAPPORT")"
# Begin rapport
echo "Server Log Analyse Rapport" > "$RAPPORT"
echo "Datum: $(date)" >> "$RAPPORT"
echo "----------------------------------------" >> "$RAPPORT"
echo "" >> "$RAPPORT"
# Analyse van /var/log/syslog
echo "Analyseren $SYSLOG" >> "$RAPPORT"
echo "Foutmeldingen (ERROR):" >> "$RAPPORT"
grep -i "error" "$SYSLOG" | sort | uniq -c | sort -nr | head -10 >> "$RAPPORT"
echo "" >> "$RAPPORT"
echo "Waarschuwingen (WARNING):" >> "$RAPPORT"
grep -i "warning" "$SYSLOG" | sort | uniq -c | sort -nr | head -10 >> "$RAPPORT"
echo "" >> "$RAPPORT"
echo "Gebruikspatronen (Top 10 meest voorkomende berichten):" >> "$RAPPORT"
grep -v "error\|warning" "$SYSLOG" | awk '{$1=""; $2=""; $3=""; print}' | sort | uniq -c | sort -nr | head -10 >> "$RAPPORT"
echo "" >> "$RAPPORT"
# Analyse van /var/log/auth.log
echo "Analyseren $AUTHLOG" >> "$RAPPORT"
echo "Inlogpogingen geslaagd:" >> "$RAPPORT"
grep "Accepted" "$AUTHLOG" | wc -l >> "$RAPPORT"
echo "Inlogpogingen mislukt:" >> "$RAPPORT"
grep "Failed password" "$AUTHLOG" | wc -l >> "$RAPPORT"
echo "Meest voorkomende gebruikers die proberen in te loggen:" >> "$RAPPORT"
grep "Failed password" "$AUTHLOG" | awk '{print $(NF-5)}' | sort | uniq -c | sort -nr | head -10
echo "" >> "$RAPPORT"
# Samenvatting
echo "Samenvatting:" >> "$RAPPORT"
TOTAL_ERRORS=$(grep -i "error" "$SYSLOG" | wc -l)
TOTAL_WARNINGS=$(grep -i "warning" "$SYSLOG" | wc -l)
TOTAL_FAILED=$(grep "Failed password" "$AUTHLOG" | wc -l)
TOTAL_ACCEPTED=$(grep "Accepted" "$AUTHLOG" | wc -l)
echo "Totaal fouten (ERROR): $TOTAL_ERRORS" >> "$RAPPORT"
echo "Totaal waarschuwingen (WARNING): $TOTAL_WARNINGS" >> "$RAPPORT"
echo "Totaal mislukte inlogpogingen: $TOTAL_FAILED" >> "$RAPPORT"
echo "Totaal geslaagde inlogpogingen: $TOTAL_ACCEPTED" >> "$RAPPORT"
echo "Rapport voltooid en opgeslagen in $RAPPORT"
```
**Gebruik:**
Maak het script uitvoerbaar met `chmod +x scriptnaam.sh` en voer het uit met `./scriptnaam.sh`. Het script genereert een rapport met de belangrijkste statistieken over de logs.
**Let op:**
- Pas indien nodig de logbestandsnamen en zoektermen aan op basis van jouw specifieke logformaten.
- Zorg dat je voldoende rechten hebt om in de logdirectory te lezen en het rapport te schrijven.
provider: deepseek
model: deepseek-chat
Hier is een Bash-script dat de logbestanden analyseert en een rapport genereert:
```bash
#!/bin/bash
# Configuratie
SYSLOG="/var/log/syslog"
AUTHLOG="/var/log/auth.log"
OUTPUT_FILE="/var/reports/server_log_report.txt"
TEMP_DIR="/tmp/log_analysis"
DATE=$(date '+%Y-%m-%d %H:%M:%S')
# Maak tijdelijke directory en output directory aan
mkdir -p "$TEMP_DIR"
mkdir -p "$(dirname "$OUTPUT_FILE")"
# Functie om logbestanden te analyseren
analyze_logs() {
local log_file=$1
local log_name=$2
echo "=== ANALYSE $log_name ===" > "$TEMP_DIR/${log_name}_analysis.txt"
# Totaal aantal regels
local total_lines=$(wc -l < "$log_file")
echo "Totaal aantal logregels: $total_lines" >> "$TEMP_DIR/${log_name}_analysis.txt"
# Foutmeldingen (ERROR level)
local error_count=$(grep -i "error" "$log_file" | wc -l)
echo "Aantal foutmeldingen (ERROR): $error_count" >> "$TEMP_DIR/${log_name}_analysis.txt"
# Waarschuwingen (WARN level)
local warning_count=$(grep -i "warn" "$log_file" | wc -l)
echo "Aantal waarschuwingen (WARN): $warning_count" >> "$TEMP_DIR/${log_name}_analysis.txt"
# Top 5 meest voorkomende foutmeldingen
echo "" >> "$TEMP_DIR/${log_name}_analysis.txt"
echo "Top 5 meest voorkomende foutmeldingen:" >> "$TEMP_DIR/${log_name}_analysis.txt"
grep -i "error" "$log_file" | sort | uniq -c | sort -nr | head -5 >> "$TEMP_DIR/${log_name}_analysis.txt"
# Top 5 meest voorkomende waarschuwingen
echo "" >> "$TEMP_DIR/${log_name}_analysis.txt"
echo "Top 5 meest voorkomende waarschuwingen:" >> "$TEMP_DIR/${log_name}_analysis.txt"
grep -i "warn" "$log_file" | sort | uniq -c | sort -nr | head -5 >> "$TEMP_DIR/${log_name}_analysis.txt"
# Gebruikspatronen - unieke processen/services
echo "" >> "$TEMP_DIR/${log_name}_analysis.txt"
echo "Unieke processen/services gevonden:" >> "$TEMP_DIR/${log_name}_analysis.txt"
awk '{print $5}' "$log_file" | sort | uniq -c | sort -nr | head -10 >> "$TEMP_DIR/${log_name}_analysis.txt"
}
# Hoofdscript
echo "Logbestanden analyseren gestart op: $DATE"
echo "Bezig met analyseren..."
# Analyseer syslog
if [ -f "$SYSLOG" ]; then
analyze_logs "$SYSLOG" "syslog"
else
echo "WAARSCHUWING: $SYSLOG niet gevonden!" > "$TEMP_DIR/syslog_analysis.txt"
fi
# Analyseer auth.log
if [ -f "$AUTHLOG" ]; then
analyze_logs "$AUTHLOG" "auth"
else
echo "WAARSCHUWING: $AUTHLOG niet gevonden!" > "$TEMP_DIR/auth_analysis.txt"
fi
# Genereer eindrapport
echo "=== SERVER LOG RAPPORT ===" > "$OUTPUT_FILE"
echo "Generatiedatum: $DATE" >> "$OUTPUT_FILE"
echo "Geanalyseerde bestanden: $SYSLOG, $AUTHLOG" >> "$OUTPUT_FILE"
echo "==========================================" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
# Voeg analyses samen
cat "$TEMP_DIR/syslog_analysis.txt" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
echo "==========================================" >> "$OUTPUT_FILE"
echo "" >> "$OUTPUT_FILE"
cat "$TEMP_DIR/auth_analysis.txt" >> "$OUTPUT_FILE"
# Voeg SSH login statistieken toe (specifiek voor auth.log)
if [ -f "$AUTHLOG" ]; then
echo "" >> "$OUTPUT_FILE"
echo "=== SSH LOGIN STATISTIEKEN ===" >> "$OUTPUT_FILE"
echo "Geslaagde SSH logins:" >> "$OUTPUT_FILE"
grep "Accepted password" "$AUTHLOG" | wc -l >> "$OUTPUT_FILE"
echo "Mislukte SSH login pogingen:" >> "$OUTPUT_FILE"
grep "Failed password" "$AUTHLOG" | wc -l >> "$OUTPUT_FILE"
echo "Verdachte login pogingen (meer dan 5 mislukte pogingen per IP):" >> "$OUTPUT_FILE"
grep "Failed password" "$AUTHLOG" | awk '{print $11}' | sort | uniq -c | sort -nr | awk '$1 > 5' >> "$OUTPUT_FILE"
fi
# Schoon tijdelijke bestanden op
rm -rf "$TEMP_DIR"
echo "Analyse voltooid!"
echo "Rapport opgeslagen in: $OUTPUT_FILE"
```
**Gebruiksaanwijzing:**
1. Sla het script op als `log_analyzer.sh`
2. Maak het uitvoerbaar: `chmod +x log_analyzer.sh`
3. Voer uit met sudo rechten: `sudo ./log_analyzer.sh`
**Het script bevat:**
- Analyse van zowel syslog als auth.log
- Telling van foutmeldingen en waarschuwingen
- Top 5 meest voorkomende errors en warnings
- Gebruikspatronen van processen/services
- SSH login statistieken
- Detectie van verdachte login pogingen
- Netjes opgemaakt rapport in /var/reports/
**Belangrijke opmerking:** Je hebt sudo rechten nodig omdat de logbestanden in /var/log/ meestal alleen leesbaar zijn door root.