ids.alfacom.it/extracted_idf/setup_crontab.sh
marco370 0bfe3258b5 Saved progress at the end of the loop
Replit-Commit-Author: Agent
Replit-Commit-Session-Id: 7a657272-55ba-4a79-9a2e-f1ed9bc7a528
Replit-Commit-Checkpoint-Type: full_checkpoint
Replit-Commit-Event-Id: 1c71ce6e-1a3e-4f53-bb5d-77cdd22b8ea3
2025-11-11 09:15:10 +00:00

167 lines
5.6 KiB
Bash

#!/bin/bash
# Script per configurare crontab per il sistema DDoS Detection
# Eseguire con: chmod +x setup_crontab.sh && ./setup_crontab.sh
# Colori per output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
echo -e "${BLUE}🔧 CONFIGURAZIONE CRONTAB SISTEMA DDoS DETECTION${NC}"
echo "=================================================="
# Rileva percorso corrente
CURRENT_DIR=$(pwd)
echo -e "${YELLOW}📁 Directory corrente: ${CURRENT_DIR}${NC}"
# Percorsi dei log
TRAINING_LOG="/root/training.log"
DETECT_LOG="/root/detect.log"
CRON_LOG="/root/cron_ddos.log"
echo -e "${YELLOW}📄 Log files:${NC}"
echo -e " • Training: ${TRAINING_LOG}"
echo -e " • Detection: ${DETECT_LOG}"
echo -e " • Crontab: ${CRON_LOG}"
# Crea backup del crontab esistente
echo -e "\n${BLUE}💾 Backup crontab esistente...${NC}"
crontab -l > /tmp/crontab_backup_$(date +%Y%m%d_%H%M%S) 2>/dev/null || echo "Nessun crontab esistente"
# Crea il nuovo crontab
echo -e "\n${BLUE}⚙️ Configurazione nuovo crontab...${NC}"
cat > /tmp/new_crontab << EOF
# ============================================
# SISTEMA DDoS DETECTION - CONFIGURAZIONE AUTOMATICA
# ============================================
# Training ogni 12 ore (alle 00:00 e 12:00)
0 */12 * * * cd ${CURRENT_DIR} && python3 analisys_02.py --training-hours 0.01 --max-records 500000 --force-training >> ${TRAINING_LOG} 2>&1
# Verifica processo detect ogni 5 minuti (riavvia se non attivo)
*/5 * * * * ${CURRENT_DIR}/check_detect.sh >> ${CRON_LOG} 2>&1
# Pulizia log settimanale (ogni domenica alle 02:00)
0 2 * * 0 find /root -name "*.log" -size +100M -exec truncate -s 50M {} \; >> ${CRON_LOG} 2>&1
# Restart completo del sistema ogni settimana (domenica alle 03:00)
0 3 * * 0 ${CURRENT_DIR}/restart_detect.sh >> ${CRON_LOG} 2>&1
EOF
# Installa il nuovo crontab
crontab /tmp/new_crontab
echo -e "${GREEN}✅ Crontab configurato con successo!${NC}"
# Crea script di controllo detect
echo -e "\n${BLUE}📜 Creazione script di controllo detect...${NC}"
cat > check_detect.sh << 'EOF'
#!/bin/bash
# Script per verificare e riavviare il processo detect se necessario
DETECT_LOG="/root/detect.log"
CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PIDFILE="/tmp/detect_ddos.pid"
# Funzione per avviare detect
start_detect() {
echo "$(date): Avvio processo detect..." >> "$DETECT_LOG"
cd "$CURRENT_DIR"
nohup python3 detect_multi_03.py --ciclo --pausa 5 --batch-size 20000 --sensibility 1 --cleanup --retention-days 0 >> "$DETECT_LOG" 2>&1 &
echo $! > "$PIDFILE"
echo "$(date): Processo detect avviato con PID $(cat $PIDFILE)" >> "$DETECT_LOG"
}
# Verifica se il processo è attivo
if [ -f "$PIDFILE" ]; then
PID=$(cat "$PIDFILE")
if ps -p "$PID" > /dev/null 2>&1; then
# Processo attivo, verifica se sta scrivendo nel log
if [ -f "$DETECT_LOG" ]; then
# Se il log non è stato modificato negli ultimi 10 minuti, riavvia
if [ $(find "$DETECT_LOG" -mmin +10 | wc -l) -gt 0 ]; then
echo "$(date): Log non aggiornato, riavvio processo..." >> "$DETECT_LOG"
kill "$PID" 2>/dev/null
sleep 5
start_detect
fi
fi
else
echo "$(date): Processo detect non trovato, riavvio..." >> "$DETECT_LOG"
start_detect
fi
else
echo "$(date): File PID non trovato, avvio processo detect..." >> "$DETECT_LOG"
start_detect
fi
EOF
chmod +x check_detect.sh
# Crea script di restart completo
echo -e "\n${BLUE}🔄 Creazione script di restart...${NC}"
cat > restart_detect.sh << 'EOF'
#!/bin/bash
# Script per restart completo del sistema detect
DETECT_LOG="/root/detect.log"
CURRENT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PIDFILE="/tmp/detect_ddos.pid"
echo "$(date): === RESTART SETTIMANALE SISTEMA DETECT ===" >> "$DETECT_LOG"
# Termina processo esistente
if [ -f "$PIDFILE" ]; then
PID=$(cat "$PIDFILE")
if ps -p "$PID" > /dev/null 2>&1; then
echo "$(date): Terminazione processo esistente PID $PID" >> "$DETECT_LOG"
kill -TERM "$PID"
sleep 10
# Force kill se necessario
if ps -p "$PID" > /dev/null 2>&1; then
kill -KILL "$PID"
fi
fi
rm -f "$PIDFILE"
fi
# Pulizia file temporanei
echo "$(date): Pulizia file temporanei..." >> "$DETECT_LOG"
find /tmp -name "*detect*" -mtime +1 -delete 2>/dev/null
find "$CURRENT_DIR" -name "*.pyc" -delete 2>/dev/null
# Riavvio processo
echo "$(date): Riavvio processo detect..." >> "$DETECT_LOG"
cd "$CURRENT_DIR"
./check_detect.sh
EOF
chmod +x restart_detect.sh
# Avvio immediato del processo detect
echo -e "\n${BLUE}🚀 Avvio immediato processo detect...${NC}"
./check_detect.sh
echo -e "\n${GREEN}✅ CONFIGURAZIONE COMPLETATA!${NC}"
echo ""
echo -e "${YELLOW}📋 COMANDI UTILI:${NC}"
echo -e " • Visualizza log detect: ${BLUE}tail -f ${DETECT_LOG}${NC}"
echo -e " • Visualizza log training: ${BLUE}tail -f ${TRAINING_LOG}${NC}"
echo -e " • Visualizza log crontab: ${BLUE}tail -f ${CRON_LOG}${NC}"
echo -e " • Stato crontab: ${BLUE}crontab -l${NC}"
echo -e " • Stato processo detect: ${BLUE}ps aux | grep detect_multi${NC}"
echo -e " • Restart manuale detect: ${BLUE}./restart_detect.sh${NC}"
echo ""
echo -e "${YELLOW}⚠️ IMPORTANTE:${NC}"
echo -e " • Il training verrà eseguito ogni 12 ore"
echo -e " • Il detect viene monitorato ogni 5 minuti"
echo -e " • Restart automatico ogni domenica alle 03:00"
echo -e " • I log vengono puliti automaticamente se > 100MB"
echo ""
echo -e "${GREEN}🎉 Sistema DDoS Detection configurato per l'esecuzione automatica!${NC}"