From f43280308cc0798b374149295a1bbf3cd77fbafa Mon Sep 17 00:00:00 2001 From: Drk0027 Date: Tue, 13 Jan 2026 10:11:05 -0500 Subject: [PATCH] probando ideas --- .gitignore | 1 + config.conf | 8 ++++++++ config.conf.example | 8 ++++++++ control-rss.sh | 45 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 .gitignore create mode 100644 config.conf create mode 100644 config.conf.example create mode 100644 control-rss.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3842932 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.conf \ No newline at end of file diff --git a/config.conf b/config.conf new file mode 100644 index 0000000..5540710 --- /dev/null +++ b/config.conf @@ -0,0 +1,8 @@ +# --- Configuración del Script --- +LOG_FILE="/var/log/nginx/interlan.access.log" # Ruta a tu archivo de log principal +# Si usas Apache, podría ser /var/log/apache2/access.log o similar + +URL_A_MONITORIZAR="/feed" # La URL que quieres analizar + +OUTPUT_JSON="visitantes_unicos.json" # Archivo JSON de salida +# --- Fin de Configuración --- diff --git a/config.conf.example b/config.conf.example new file mode 100644 index 0000000..fdd1517 --- /dev/null +++ b/config.conf.example @@ -0,0 +1,8 @@ +# --- Configuración del Script --- +LOG_FILE="/var/log/nginx/access.log" # Ruta a tu archivo de log principal +# Si usas Apache, podría ser /var/log/apache2/access.log o similar + +URL_A_MONITORIZAR="/feed" # El script es principalmente para ver datos de RSS, pero lo puedes modificar tu gusto + +OUTPUT_JSON="visitantes_unicos.json" # Archivo JSON de salida +# --- Fin de Configuración --- diff --git a/control-rss.sh b/control-rss.sh new file mode 100644 index 0000000..9982aa1 --- /dev/null +++ b/control-rss.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Cargar configuración +source config.conf + +# Creacion del JSON si no existe +if [ ! -f "$OUTPUT_FILE" ]; then + echo '{"total_unicos": 0, "visitas": []}' > "$OUTPUT_FILE" +fi + +zgrep "$TARGET_URL" $LOG_PATH | awk -F'"' '{ + split($1, a, " "); + ip = a[1]; fecha = substr(a[4], 2, 11); ua = $6; + print ip "|" fecha "|" ua +}' | sort -u > temp_agents.txt + +while IFS="|" read -r ip fecha ua; do + if ! jq -e --arg ua "$ua" --arg date "$fecha" '.visitas[] | select(.user_agent == $ua and .fecha == $date)' "$OUTPUT_FILE" > /dev/null; then + jq --arg ip "$ip" --arg date "$fecha" --arg ua "$ua" \ + '.visitas += [{"ip": $ip, "fecha": $date, "user_agent": $ua}] | .total_unicos = (.visitas | map(.user_agent) | unique | length)' \ + "$OUTPUT_FILE" > "$OUTPUT_FILE.tmp" && mv "$OUTPUT_FILE.tmp" "$OUTPUT_FILE" + fi +done < temp_agents.txt + +# 2. Generar datos para Gnuplot (Frecuencia por fecha) +# Extraemos del JSON: "Fecha Cuenta" +jq -r '.visitas[].fecha' "$OUTPUT_FILE" | sort | uniq -c | awk '{print $2, $1}' > datos_grafica.dat + +# 3. Generar la gráfica con Gnuplot +echo "Generando gráfica con Gnuplot..." +gnuplot <