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
167 lines
5.6 KiB
Bash
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}" |