Backup automatico delle configurazioni degli switch di rete Huawei via SSH/Telnet con visualizzazione diff.
Automatic backup of Huawei network switch configurations via SSH/Telnet with diff visualization.
- Backup manuale per singolo dispositivo (IP o selezione da CSV)
- Discovery automatica via SNMP + backup di tutti gli switch in una subnet
- Fallback automatico SSH -> Telnet
- Diff side-by-side tra configurazioni successive
- Supporto credenziali multiple con fallback
- Backup schedulato via cron con report email
- Storico backup con filtri e ordinamento
- Interfaccia web moderna con tema chiaro/scuro
- Manual backup for a single device (IP or CSV selection)
- Automatic SNMP discovery + backup of all switches in a subnet
- Automatic SSH -> Telnet fallback
- Side-by-side diff between successive configurations
- Multiple credential support with fallback
- Scheduled backup via cron with email reporting
- Backup history with filters and sorting
- Modern web UI with light/dark theme
config-backup/
app.py # Flask application factory
run.py # Standalone runner
routes.py # API endpoints
ssh_manager.py # SSH/Telnet connections (netmiko)
backup_manager.py # Save configs, calculate diffs
database.py # SQLite metadata storage
csv_parser.py # Parse Pdv.CSV for site credentials
scheduled_backup.py # Cron-based batch backup with email
templates/
index.html # Main UI
static/
css/style.css # Glassmorphism theme
js/app.js # Frontend logic
- Python 3.8+
- pip packages:
flask,flask-cors,netmiko,requests
pip install -r requirements.txtCopia .env.example in .env e modifica i valori. / Copy .env.example to .env and edit the values.
cp .env.example .env| Variabile | Descrizione | Default |
|---|---|---|
SECRET_KEY |
Flask secret key | change-me-in-production |
DISCOVERY_API_URL |
URL dell'API discovery SNMP | http://localhost/api/discover |
BACKUP_API_URL |
URL di questa app (per scheduled backup) | http://localhost:5003 |
SMTP_SERVER |
Server SMTP per notifiche | localhost |
SMTP_PORT |
Porta SMTP | 25 |
SMTP_FROM |
Email mittente | config-backup@example.com |
SMTP_TO |
Email destinatario report | admin@example.com |
# Sviluppo / Development
python run.py
# Oppure / Or
python app.pyL'applicazione sara disponibile su http://localhost:5003.
The application will be available at http://localhost:5003.
| Metodo | Endpoint | Descrizione |
|---|---|---|
| GET | / |
Web UI |
| GET | /api/sites |
Lista siti da CSV |
| POST | /api/backup |
Backup singolo dispositivo |
| POST | /api/backup/subnet |
Backup per subnet |
| POST | /api/backup/discover-and-backup |
Discovery SNMP + backup |
| GET | /api/backups |
Lista storico backup |
| GET | /api/backups/<id> |
Dettaglio backup |
| GET | /api/backups/<id>/download |
Download file configurazione |
| GET | /api/diff/<id1>/<id2> |
Diff tra due backup |
| GET | /api/diff/latest/<sito> |
Diff ultimi due backup di un sito |
| GET | /api/health |
Health check |
# Esecuzione manuale / Manual run
python scheduled_backup.py
# Dry run (solo log, nessun backup)
python scheduled_backup.py --dry-run
# Solo un sito specifico / Single site
python scheduled_backup.py --site 10
# Cron (ogni giorno alle 2:00)
0 2 * * * cd /path/to/config-backup && python3 scheduled_backup.py >> /var/log/config-backup-scheduled.log 2>&1Il file Pdv.CSV contiene le credenziali dei siti (non incluso nel repository).
The Pdv.CSV file contains site credentials (not included in the repository).
sito;Nome;Network;utente;password;Switch CORE;utente Core;password core
1;Sede Centrale;10.1.4.0/24;admin;pass;10.1.4.251;admin_core;pass_coreMIT - vedi LICENSE