#!/bin/bash # NetGescon Sync Automation Setup # Script per configurare la sincronizzazione automatica # Versione: 1.0 # Data: 2025-01-17 set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" CRON_FILE="/tmp/netgescon-sync-cron" # Colori RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' echo -e "${BLUE}NetGescon Sync Automation Setup${NC}" echo "=======================================" echo # Verifica se i script esistono if [[ ! -f "$SCRIPT_DIR/auto-sync.sh" ]]; then echo -e "${RED}Errore: Script auto-sync.sh non trovato!${NC}" exit 1 fi if [[ ! -f "$SCRIPT_DIR/sync-monitor.sh" ]]; then echo -e "${RED}Errore: Script sync-monitor.sh non trovato!${NC}" exit 1 fi echo -e "${GREEN}Script trovati:${NC}" echo "✅ auto-sync.sh" echo "✅ sync-monitor.sh" echo # Rendi eseguibili gli script chmod +x "$SCRIPT_DIR/auto-sync.sh" chmod +x "$SCRIPT_DIR/sync-monitor.sh" echo -e "${GREEN}Script resi eseguibili${NC}" echo # Configurazione cron jobs echo -e "${BLUE}Configurazione automatizzazione:${NC}" echo # Backup del crontab esistente crontab -l > "$CRON_FILE" 2>/dev/null || echo "" > "$CRON_FILE" # Aggiungi i nostri job (se non già presenti) if ! grep -q "NetGescon Auto-Sync" "$CRON_FILE"; then cat >> "$CRON_FILE" << EOF # NetGescon Auto-Sync Jobs # Sincronizzazione ogni 15 minuti (solo nei giorni lavorativi, ore 8-18) */15 8-18 * * 1-5 $SCRIPT_DIR/auto-sync.sh -m sync -v >> $HOME/netgescon/log/cron-sync.log 2>&1 # Backup completo ogni notte alle 2:00 0 2 * * * $SCRIPT_DIR/auto-sync.sh -m backup -t both -v >> $HOME/netgescon/log/cron-backup.log 2>&1 # Deploy completo ogni lunedì alle 6:00 0 6 * * 1 $SCRIPT_DIR/auto-sync.sh -m deploy -r -v >> $HOME/netgescon/log/cron-deploy.log 2>&1 # Monitoraggio dello stato ogni 5 minuti */5 * * * * $SCRIPT_DIR/sync-monitor.sh status >> $HOME/netgescon/log/cron-monitor.log 2>&1 # Pulizia log vecchi ogni domenica alle 3:00 0 3 * * 0 find $HOME/netgescon/log -name "*.log" -mtime +30 -delete 2>/dev/null || true EOF fi # Installa il nuovo crontab if crontab "$CRON_FILE"; then echo -e "${GREEN}✅ Crontab aggiornato con successo${NC}" else echo -e "${RED}❌ Errore nell'aggiornamento del crontab${NC}" exit 1 fi # Pulisci file temporaneo rm -f "$CRON_FILE" echo echo -e "${BLUE}Jobs configurati:${NC}" echo "• Sincronizzazione: ogni 15 minuti (lun-ven, 8-18)" echo "• Backup completo: ogni notte alle 2:00" echo "• Deploy completo: ogni lunedì alle 6:00" echo "• Monitoraggio: ogni 5 minuti" echo "• Pulizia log: ogni domenica alle 3:00" echo # Crea le directory necessarie mkdir -p "$HOME/netgescon/log" mkdir -p "$HOME/netgescon/backup/sync" mkdir -p "$HOME/netgescon/reports" echo -e "${GREEN}✅ Directory create${NC}" echo # Crea script di utilità cat > "$SCRIPT_DIR/sync-utils.sh" << 'EOF' #!/bin/bash # NetGescon Sync Utilities # Script di utilità per la gestione della sincronizzazione SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" case "${1:-help}" in "start") echo "Avvio sincronizzazione manuale..." "$SCRIPT_DIR/auto-sync.sh" -m sync -v ;; "stop") echo "Arresto processi di sincronizzazione..." pkill -f "auto-sync.sh" || true echo "Processi arrestati" ;; "status") "$SCRIPT_DIR/sync-monitor.sh" dashboard ;; "logs") tail -f "$HOME/netgescon/log/auto-sync.log" ;; "backup") echo "Avvio backup manuale..." "$SCRIPT_DIR/auto-sync.sh" -m backup -t both -v ;; "deploy") echo "Avvio deploy manuale..." "$SCRIPT_DIR/auto-sync.sh" -m deploy -r -v ;; "clean") echo "Pulizia log vecchi..." find "$HOME/netgescon/log" -name "*.log" -mtime +7 -delete echo "Pulizia completata" ;; "report") "$SCRIPT_DIR/sync-monitor.sh" html ;; "cron") echo "Crontab attuale:" crontab -l | grep -A 10 -B 2 "NetGescon" || echo "Nessun job NetGescon trovato" ;; "help"|*) echo "NetGescon Sync Utilities" echo echo "Uso: $0 [COMANDO]" echo echo "Comandi:" echo " start Avvia sincronizzazione manuale" echo " stop Arresta processi di sincronizzazione" echo " status Mostra dashboard stato" echo " logs Visualizza log in tempo reale" echo " backup Esegui backup manuale" echo " deploy Esegui deploy manuale" echo " clean Pulisci log vecchi" echo " report Genera report HTML" echo " cron Mostra crontab NetGescon" echo " help Mostra questo aiuto" ;; esac EOF chmod +x "$SCRIPT_DIR/sync-utils.sh" echo -e "${GREEN}✅ Script di utilità creato: sync-utils.sh${NC}" echo # Crea link simbolici per accesso facile if [[ -d "$HOME/bin" ]] || mkdir -p "$HOME/bin"; then ln -sf "$SCRIPT_DIR/sync-utils.sh" "$HOME/bin/netgescon-sync" 2>/dev/null || true echo -e "${GREEN}✅ Link simbolico creato: ~/bin/netgescon-sync${NC}" fi echo echo -e "${BLUE}Setup completato!${NC}" echo echo -e "${YELLOW}Comandi utili:${NC}" echo "• netgescon-sync status - Mostra stato" echo "• netgescon-sync start - Sincronizzazione manuale" echo "• netgescon-sync logs - Visualizza log" echo "• netgescon-sync report - Genera report HTML" echo echo -e "${YELLOW}File di configurazione:${NC}" echo "• $SCRIPT_DIR/config/sync-config.conf" echo echo -e "${YELLOW}Log directory:${NC}" echo "• $HOME/netgescon/log/" echo echo -e "${GREEN}La sincronizzazione automatica è ora attiva!${NC}"