#!/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}"