cisco-network-test Svelte Themes

Cisco Network Test

Full-stack network diagnostic dashboard — ping, traceroute, SNMP, CDP/LLDP, port scan, and SSH terminal for Cisco environments (FastAPI + Svelte)

Cisco Network Test Dashboard

A full-stack network diagnostic platform for Cisco environments. Run ping, traceroute, DNS, port scans, SNMP queries, CDP/LLDP discovery, and ARP lookups across hundreds of devices from a single web interface — with credential management, VRF support, and an integrated SSH terminal.

Features

  • Batch Network Testing — Scan up to 500 targets per session with ping, traceroute, DNS, port scan, SNMP, CDP/LLDP, and ARP tests
  • SNMP v2c & v3 — Query device system info, interface statistics (64-bit counters), with ifXTable/ifTable fallback
  • CDP/LLDP Discovery — Discover neighbors and map device connectivity
  • SSH Terminal — Interactive WebSocket-based terminal with xterm.js, device history, and favorites
  • Credential Profiles — Reusable SNMP and SSH credential sets with macOS Keychain integration
  • VRF-Aware — Per-scan or per-IP VRF context with automatic command injection
  • Real-Time Results — Live polling UI updates as tests complete
  • Scan History — Browse, filter, and export past scan results to PDF
  • CSV Import — Bulk-load targets from CSV files

Tech Stack

Layer Technology
Frontend Svelte, Vite, xterm.js (WebGL)
Backend FastAPI, Uvicorn (ASGI)
Database SQLite (WAL mode) with aiosqlite
Network icmplib, Netmiko, pysnmp-lextudio, pyATS/Genie
SSH Terminal asyncssh over WebSocket
Export fpdf2 (PDF reports)

Architecture

┌─────────────────────────────────────────────┐
│            Svelte Frontend (Vite)            │
│  ScanForm │ Results │ SSH Terminal │ Creds   │
├─────────────────────────────────────────────┤
│            FastAPI Backend (async)           │
├──────┬──────┬───────┬──────┬───────┬────────┤
│ Ping │ DNS  │ SNMP  │ CDP/ │ ARP   │ SSH    │
│      │      │ v2/v3 │ LLDP │       │ Cmds   │
├──────┴──────┴───────┴──────┴───────┴────────┤
│   Credential Manager  │  Test Executor      │
│   (Keychain-backed)   │  (semaphore: 20)    │
├─────────────────────────────────────────────┤
│              SQLite (WAL mode)              │
└─────────────────────────────────────────────┘

Quick Start

# Clone
git clone https://github.com/bradmccloskey/cisco-network-test.git
cd cisco-network-test

# Backend
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn backend.main:app --reload

# Frontend (separate terminal)
cd frontend
npm install && npm run dev

Open http://localhost:5173 in your browser.

Project Structure

cisco-network-test/
├── backend/
│   ├── main.py                  # FastAPI app, middleware, lifespan
│   ├── db/
│   │   ├── connection.py        # DB init, migrations
│   │   └── schema.sql           # SQLite schema
│   ├── routers/                 # API endpoints
│   │   ├── scan.py              # Scan execution & results
│   │   ├── credentials.py       # Credential CRUD
│   │   ├── ssh.py               # SSH command execution
│   │   ├── ssh_terminal.py      # WebSocket terminal
│   │   ├── history.py           # Scan history
│   │   ├── vrf.py               # VRF management
│   │   └── export.py            # PDF export
│   ├── services/                # Business logic
│   │   ├── network_tests.py     # Ping, traceroute, DNS, port scan
│   │   ├── snmp_service.py      # SNMP v2c/v3 queries
│   │   ├── cdp_lldp_service.py  # Neighbor discovery
│   │   ├── arp_service.py       # ARP table extraction
│   │   ├── ssh_service.py       # Remote command execution
│   │   ├── credential_manager.py # Keychain integration
│   │   └── test_executor.py     # Async execution with semaphore
│   └── models/                  # Pydantic schemas
├── frontend/
│   └── src/lib/
│       ├── ScanForm.svelte      # Target input & test selection
│       ├── ScanResults.svelte   # Real-time result display
│       ├── SSHPage.svelte       # Terminal UI
│       └── CredentialsPage.svelte # Profile management
└── requirements.txt

Test Types

Test Description
Ping ICMP connectivity with RTT, packet loss, jitter
Traceroute Multi-hop path discovery with reverse DNS
DNS Forward/reverse lookups, multiple record types
Port Scan TCP probe on SSH, Telnet, HTTP/S, SNMP, NETCONF
SNMP System info, interface stats, uptime, hostname
CDP/LLDP Layer 2 neighbor discovery
ARP ARP table extraction from devices

Key Design Decisions

  • Async everywhere — All network I/O uses asyncio for non-blocking concurrency
  • Semaphore-limited execution — Max 20 concurrent tests prevents overwhelming targets
  • Keychain credentials — Passwords never stored in the database
  • WAL mode SQLite — Handles concurrent reads during active scans
  • Per-IP VRF overrides — Supports mixed-VRF environments in a single scan
  • WebSocket SSH — Bidirectional terminal without page refreshes

Requirements

  • Python 3.11+
  • Node.js 18+ (frontend build)
  • macOS (for Keychain credential storage) or Linux with alternative secret backend

Top categories

Loading Svelte Themes