HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1014-azure #14~24.04.1-Ubuntu SMP Fri Oct 3 20:52:11 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: //var/log/nginx/get_wp_logs_last_7_days.sh
#!/bin/bash

############################
# CONFIG
############################
LOG_DIR="/var/log/nginx"
OUTPUT_DIR="/home/ubuntu/output"
DAYS=7

LOG_FILES=(
    "mentoring-wp_access.log"
    "truelysell-wp_access.log"
    "kofejob-wp_access.log"
    "dreamslms-wp_access.log"
    "listee-wp_access.log"
    "doccure-wp_access.log"
    "dreamsrent-wp_access.log"
    "dreamsalon-wp_access.log"
    "dreamstour-wp_access.log"
    "dreamsai-wp_access.log"
)

############################
# PREP
############################
mkdir -p "$OUTPUT_DIR"
REF_DATE=$(date -d "$DAYS days ago 00:00:00" +%s)

############################
# FUNCTION TO FILTER LOGS
############################
filter_log() {
    while IFS= read -r line; do
        # Extract timestamp inside brackets
        ts=$(echo "$line" | grep -oP '\[\K[0-9]{2}/[A-Za-z]{3}/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}')
        if [ -n "$ts" ]; then
            # Convert to seconds safely
            log_sec=$(date -d "$ts" +%s 2>/dev/null)
            if [ -n "$log_sec" ] && [ "$log_sec" -ge "$REF_DATE" ]; then
                echo "$line"
            fi
        fi
    done
}

############################
# PROCESS LOGS
############################
for LOG in "${LOG_FILES[@]}"; do
    INPUT="$LOG_DIR/$LOG"
    OUTPUT="$OUTPUT_DIR/${LOG%.log}_last_${DAYS}_days.log"

    if [ ! -f "$INPUT" ]; then
        echo "File $INPUT not found, skipping..."
        continue
    fi

    echo "Processing $LOG ..."

    # Clear output file
    > "$OUTPUT"

    # Current log
    filter_log < "$INPUT" >> "$OUTPUT"

    # Rotated logs
    for ROTATED in "$LOG_DIR/${LOG}."*; do
        [ -f "$ROTATED" ] || continue

        if [[ "$ROTATED" == *.gz ]]; then
            zcat "$ROTATED" | filter_log >> "$OUTPUT"
        else
            filter_log < "$ROTATED" >> "$OUTPUT"
        fi
    done
done

echo "Done! Logs saved in $OUTPUT_DIR"