Files
UnifiMultimirror/README.md
T
grandir66andCursor 7bd3f755be 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>
2026-02-05 22:09:40 +01:00

4.9 KiB

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

# 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)

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

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

./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.