mirror of
https://github.com/grandir66/UnifiMultimirror.git
synced 2026-10-02 15:24:42 +02:00
- TUI application (Textual) for interactive port selection - CLI application (Rich) as alternative interface - SSH manager for device connection - Config parser for running-config, interface status, port-channel - Script generator for Bash, Python, and command files - Support for multiple source ports and LAG interfaces Co-authored-by: Cursor <cursoragent@cursor.com>
155 lines
4.9 KiB
Markdown
155 lines
4.9 KiB
Markdown
# UnifiMultimirror
|
|
|
|
Tool per la gestione del **port mirroring multi-porta** su switch Ubiquiti UniFi/EdgeSwitch.
|
|
|
|
Il controller UniFi supporta nativamente solo una singola porta in mirroring. Questo tool permette di configurare **multiple porte source** via CLI SSH, superando questa limitazione.
|
|
|
|
## Caratteristiche
|
|
|
|
- **Interfaccia TUI** (Text User Interface) con navigazione da tastiera
|
|
- **Visualizzazione porte** con stato link, VLAN (PVID e Tagged), ruolo mirroring
|
|
- **Configurazione interattiva** con selezione checkbox delle porte source
|
|
- **Generazione script** riutilizzabili (Bash, Python, comandi puri)
|
|
- **Applicazione diretta** della configurazione via SSH
|
|
- Supporto per **porte fisiche** e **LAG** (Link Aggregation Groups)
|
|
|
|
## Screenshot
|
|
|
|
```
|
|
┌──────────────────────────────────────────────────────────────────────────────┐
|
|
│ │ Porta │ Descrizione │ Stato │ PVID │ Tagged │ Ruolo│
|
|
├─────┼───────┼──────────────────────────┼───────┼──────┼───────────────┼──────┤
|
|
│ ◀◀ │ 0/3 │ SFP_ 3 - MONITORING PORT │ UP │ 1 │ 2,4-7,15-16.. │ DEST │
|
|
│ [X] │ 0/4 │ SFP_ 4 - SW CED 237 │ UP │ 1 │ 2,4-7,15-16.. │ SRC │
|
|
│ [ ] │ 0/5 │ SFP_ 5 - SW 239 CLIENT │ UP │ 1 │ 2,4-7,15-16.. │ - │
|
|
│ [X] │ 0/8 │ SFP_ 8 - SW CED 245 AP │ UP │ 1 │ 2,4-7,15-16.. │ SRC │
|
|
└─────┴───────┴──────────────────────────┴───────┴──────┴───────────────┴──────┘
|
|
```
|
|
|
|
## Requisiti
|
|
|
|
- Python 3.8+
|
|
- Switch Ubiquiti UniFi o EdgeSwitch con accesso SSH abilitato
|
|
- Credenziali admin
|
|
|
|
## Installazione
|
|
|
|
```bash
|
|
# Clona il repository
|
|
git clone https://github.com/tuousername/UnifiMultimirror.git
|
|
cd UnifiMultimirror
|
|
|
|
# Installa le dipendenze
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Dipendenze
|
|
|
|
- `paramiko` - Connessione SSH
|
|
- `cryptography` - Crittografia password
|
|
- `rich` - Formattazione output CLI
|
|
- `textual` - Interfaccia TUI
|
|
|
|
## Utilizzo
|
|
|
|
### Interfaccia TUI (consigliata)
|
|
|
|
```bash
|
|
python tui_app.py
|
|
```
|
|
|
|
**Navigazione:**
|
|
- `↑/↓` - Muovi cursore
|
|
- `Spazio/Enter` - Seleziona/deseleziona porta source
|
|
- `D` - Imposta porta come destination
|
|
- `A` - Seleziona tutte le porte
|
|
- `N` - Deseleziona tutte
|
|
- `F10` - Conferma configurazione
|
|
- `ESC` - Annulla
|
|
|
|
**Schermata principale:**
|
|
- `R` - Ricarica configurazione dal device
|
|
- `C` - Configura mirroring
|
|
- `G` - Genera script
|
|
- `F5` - Applica configurazione
|
|
- `Q` - Esci
|
|
|
|
### Interfaccia CLI classica
|
|
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
Menu testuale con opzioni numerate.
|
|
|
|
## Script Generati
|
|
|
|
Quando selezioni "Genera Script", vengono creati 3 file nella cartella `generated/`:
|
|
|
|
| File | Descrizione |
|
|
|------|-------------|
|
|
| `mirror_config_*.sh` | Script Bash (richiede `sshpass`) |
|
|
| `mirror_config_*.py` | Script Python standalone |
|
|
| `mirror_commands_*.txt` | Comandi puri per uso manuale |
|
|
|
|
### Esempio script Bash
|
|
|
|
```bash
|
|
./generated/mirror_config_20260205_143000.sh
|
|
# oppure con password come argomento
|
|
./generated/mirror_config_20260205_143000.sh "mypassword"
|
|
```
|
|
|
|
## Comandi CLI EdgeSwitch
|
|
|
|
Il tool genera automaticamente i seguenti comandi:
|
|
|
|
```
|
|
cli
|
|
enable
|
|
configure
|
|
no monitor session 1 # Rimuove sessione esistente
|
|
monitor session 1 destination interface 0/3 # Porta monitor
|
|
monitor session 1 source interface 0/4 # Porta da monitorare
|
|
monitor session 1 source interface 0/8 # Altra porta source
|
|
...
|
|
monitor session 1 mode # Attiva sessione
|
|
exit
|
|
```
|
|
|
|
## Note Importanti
|
|
|
|
- Le modifiche via CLI sono **temporanee** e potrebbero essere sovrascritte dal controller UniFi al prossimo provisioning
|
|
- Usa gli script generati per **riapplicare** la configurazione dopo un reboot o provisioning
|
|
- L'utente SSH deve essere `admin`
|
|
|
|
## Struttura Progetto
|
|
|
|
```
|
|
UnifiMultimirror/
|
|
├── tui_app.py # Interfaccia TUI (Textual)
|
|
├── main.py # Interfaccia CLI classica
|
|
├── ssh_manager.py # Gestione connessione SSH
|
|
├── config_parser.py # Parser configurazione switch
|
|
├── ui.py # UI per CLI classica (Rich)
|
|
├── script_generator.py # Generatore script
|
|
├── requirements.txt # Dipendenze Python
|
|
├── generated/ # Script generati
|
|
│ └── .gitkeep
|
|
└── README.md
|
|
```
|
|
|
|
## Compatibilità
|
|
|
|
Testato su:
|
|
- USW-Pro-Aggregation (firmware 7.1.26)
|
|
- Altri switch UniFi/EdgeSwitch con CLI simile
|
|
|
|
## Licenza
|
|
|
|
MIT License
|
|
|
|
## Autore
|
|
|
|
Progetto sviluppato per semplificare la gestione del port mirroring multi-porta su reti Ubiquiti.
|