slogan3

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

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.