slogan3

Ontwikkel een Bash of PowerShell Script voor Geautomatiseerde Server Log Correlatie en Incidentanalyse

description

Met deze prompt kan de gebruiker geavanceerde serverlogcorrelatie en incidentanalyse automatiseren, wat helpt bij het sneller identificeren van complexe problemen die verspreid zijn over meerdere logbronnen. Dit verbetert het serverbeheer en versnelt de probleemoplossing, beter dan losse loganalyse of handmatige inspectie.

prompt

Help me een Bash of PowerShell script te maken dat serverlogbestanden van verschillende bronnen combineert en correleert om complexe incidenten te analyseren. Logbestanden die ik wil combineren: <voer de paden van logbestanden in> Analyseperiode ...

try_prompt

generate_helper
disclaimerOnPageApi

ai_answers

provider: openai
model: gpt-4.1-nano
Hier is een voorbeeld van een Bash-script dat de genoemde logbestanden combineert, filtert op de opgegeven incidentpatronen, en een rapport genereert: ```bash #!/bin/bash # Definieer logbestanden LOGFILES=("/var/log/syslog" "/var/log/auth.log") # Defineer de zoekpatronen PATTERNS=("ERR123" "WARNING42") # Uitvoerbestand OUTPUT="/home/user/incident_rapport.txt" # Maak of leeg het rapportbestand > "$OUTPUT" # Voeg een kop toe met datum en tijd echo "Incident Rapport - $(date)" >> "$OUTPUT" echo "==========================" >> "$OUTPUT" echo "" >> "$OUTPUT" # Loop door elk logbestand for LOGFILE in "${LOGFILES[@]}"; do echo "Analyseren van $LOGFILE ..." >> "$OUTPUT" # Check of het logbestand bestaat if [ -f "$LOGFILE" ]; then for PATTERN in "${PATTERNS[@]}"; do echo "Zoek naar patroon: $PATTERN" >> "$OUTPUT" echo "----------------------------------------" >> "$OUTPUT" # Filter de logs op het patroon en voeg toe aan het rapport grep "$PATTERN" "$LOGFILE" >> "$OUTPUT" echo "" >> "$OUTPUT" done else echo "Logbestand $LOGFILE niet gevonden." >> "$OUTPUT" fi echo "" >> "$OUTPUT" done echo "Rapport gegenereerd op $OUTPUT" ``` **Gebruik:** 1. Sla dit script op als bijvoorbeeld `analyze_logs.sh`. 2. Maak het uitvoerbaar met: `chmod +x analyze_logs.sh`. 3. Voer het script uit met: `./analyze_logs.sh`. Dit script zoekt naar de patronen ERR123 en WARNING42 in de opgegeven logbestanden, combineert de resultaten in één rapport, en plaatst dat in `/home/user/incident_rapport.txt`. Indien je meer patronen wilt toevoegen, voeg ze toe aan de `PATTERNS` array.
provider: deepseek
model: deepseek-chat
Hier is een Bash-script dat aan uw vereisten voldoet: ```bash #!/bin/bash # Definieer variabelen SYSLOG="/var/log/syslog" AUTH_LOG="/var/log/auth.log" OUTPUT_FILE="/home/user/incident_rapport.txt" ERROR_PATTERNS=("ERR123" "WARNING42") START_TIME="" END_TIME="" # Functie om timestamp te parsen parse_timestamp() { # Voorbeeld: Jan 1 12:00:00 date -d "$1" +%s 2>/dev/null } # Vraag om tijdsperiode echo "Voer de starttijd in (bijv: 'Jan 1 12:00:00'):" read START_TIME echo "Voer de eindtijd in (bijv: 'Jan 1 13:00:00'):" read END_TIME # Converteer naar timestamp START_TS=$(parse_timestamp "$START_TIME") END_TS=$(parse_timestamp "$END_TIME") if [[ -z "$START_TS" || -z "$END_TS" ]]; then echo "Ongeldige tijdformaat. Gebruik bijvoorbeeld: 'Jan 1 12:00:00'" exit 1 fi # Maak rapport aan echo "=== INCIDENTRAPPORT ===" > "$OUTPUT_FILE" echo "Periode: $START_TIME - $END_TIME" >> "$OUTPUT_FILE" echo "Geanalyseerde logs: $SYSLOG, $AUTH_LOG" >> "$OUTPUT_FILE" echo "Gezochte patronen: ${ERROR_PATTERNS[*]}" >> "$OUTPUT_FILE" echo "=====================================" >> "$OUTPUT_FILE" echo "" >> "$OUTPUT_FILE" # Functie om logs te analyseren analyze_log() { local log_file=$1 local pattern=$2 echo "Analyseren van $log_file voor patroon: $pattern" >> "$OUTPUT_FILE" echo "----------------------------------------" >> "$OUTPUT_FILE" while IFS= read -r line; do if [[ "$line" == *"$pattern"* ]]; then # Extraheer timestamp uit loglijn (aanpassen indien nodig) log_time=$(echo "$line" | awk '{print $1" "$2" "$3}') log_ts=$(parse_timestamp "$log_time") # Controleer of binnen tijdsperiode valt if [[ "$log_ts" -ge "$START_TS" && "$log_ts" -le "$END_TS" ]]; then echo "$line" >> "$OUTPUT_FILE" fi fi done < "$log_file" echo "" >> "$OUTPUT_FILE" } # Analyseer elke log voor elk patroon for pattern in "${ERROR_PATTERNS[@]}"; do analyze_log "$SYSLOG" "$pattern" analyze_log "$AUTH_LOG" "$pattern" done # Correlatie-analyse echo "=== CORRELATIE-ANALYSE ===" >> "$OUTPUT_FILE" echo "Gevonden incidenten per tijdsinterval:" >> "$OUTPUT_FILE" # Groepeer logs per tijdseenheid (bijv. per 5 minuten) for ((ts=START_TS; ts<=END_TS; ts+=300)); do interval_start=$(date -d "@$ts" "+%b %d %H:%M:%S") interval_end=$(date -d "@$((ts+300))" "+%b %d %H:%M:%S") echo "Interval: $interval_start - $interval_end" >> "$OUTPUT_FILE" for pattern in "${ERROR_PATTERNS[@]}"; do count_syslog=$(grep -c "$pattern" "$SYSLOG" 2>/dev/null) count_auth=$(grep -c "$pattern" "$AUTH_LOG" 2>/dev/null) if [[ $count_syslog -gt 0 || $count_auth -gt 0 ]]; then echo " $pattern: $count_syslog keer in syslog, $count_auth keer in auth.log" >> "$OUTPUT_FILE" fi done echo "" >> "$OUTPUT_FILE" done echo "Rapport gegenereerd op: $(date)" >> "$OUTPUT_FILE" echo "Rapport opgeslagen in: $OUTPUT_FILE" # Toon samenvatting echo "Analyse voltooid!" echo "Totaal gevonden ERR123: $(grep -c "ERR123" "$OUTPUT_FILE")" echo "Totaal gevonden WARNING42: $(grep -c "WARNING42" "$OUTPUT_FILE")" ``` **Gebruiksaanwijzing:** 1. Sla het script op als `incident_analyzer.sh` 2. Maak het uitvoerbaar: `chmod +x incident_analyzer.sh` 3. Voer uit: `./incident_analyzer.sh` 4. Volg de prompts voor start- en eindtijd **Kenmerken van dit script:** - Combineert syslog en auth.log - Zoekt naar specifieke patronen (ERR123, WARNING42) - Filtert op tijdsperiode - Genereert gedetailleerd correlatierapport - Toont samenvatting van gevonden incidenten **Opmerking:** Het timestamp-formaat kan per systeem verschillen. Pas de `parse_timestamp` functie aan indien nodig voor uw specifieke logformaat.