#!/bin/bash # # IDS Analytics Aggregator - Manual Execution Wrapper # Carica credenziali da .env e esegue aggregazione # # Usage: # ./run_analytics.sh hourly # ./run_analytics.sh daily # set -e # Verifica parametro if [ "$#" -ne 1 ]; then echo "Usage: $0 {hourly|daily}" exit 1 fi MODE=$1 # Verifica modo valido if [ "$MODE" != "hourly" ] && [ "$MODE" != "daily" ]; then echo "Errore: modo deve essere 'hourly' o 'daily'" exit 1 fi # Directory IDS IDS_DIR="/opt/ids" ENV_FILE="$IDS_DIR/.env" SCRIPT="$IDS_DIR/python_ml/analytics_aggregator.py" VENV="$IDS_DIR/venv/bin/python3" # Verifica file .env esiste if [ ! -f "$ENV_FILE" ]; then echo "Errore: File $ENV_FILE non trovato!" exit 1 fi # Verifica permessi .env (deve essere readable solo da owner) ENV_PERMS=$(stat -c %a "$ENV_FILE") if [ "$ENV_PERMS" != "600" ] && [ "$ENV_PERMS" != "400" ]; then echo "Attenzione: $ENV_FILE dovrebbe avere permessi 600 (rw-------)" echo "Esegui: chmod 600 $ENV_FILE" fi # Carica variabili d'ambiente e esegui aggregatore echo "🔄 Esecuzione aggregazione $MODE..." # Export variabili da .env set -a source "$ENV_FILE" set +a # Esegui come user ids con venv if [ "$(whoami)" = "ids" ]; then # Già user ids "$VENV" "$SCRIPT" "$MODE" else # Switch a user ids sudo -u ids -E "$VENV" "$SCRIPT" "$MODE" fi echo "✅ Aggregazione $MODE completata!"