mirror of
https://github.com/grandir66/UnifiMultimirror.git
synced 2026-10-02 15:24:42 +02:00
Initial commit: UnifiMultimirror port mirroring tool
- 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>
This commit is contained in:
commit
7bd3f755be
9 files changed
+3888
No files matched your search
@@ -0,0 +1,154 @@
|
||||
# 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.
|
||||
Reference in new issue
Block a user