A unified terminal emulator with integrated device discovery, fingerprinting, and network visualization.
IMPORTANT: This project is currently a Proof of Concept (POC) to demonstrate the feasibility and potential of combining terminal emulation, device discovery, and network visualization in a single interface. While functional, it should not be considered production-ready software. Features may be incomplete, and significant changes could occur during development.
This POC aims to spark discussion about improving network operations tooling and demonstrate possible approaches to reducing tool sprawl in network management.
SSH Terminal Telemetry combines interactive terminal access, automatic device fingerprinting, and network visualization into a single, integrated interface. It eliminates the need to juggle multiple tools by providing:
- Unified Interface: Terminal, device information, and network visualization in a single window
- Automatic Device Fingerprinting: Identifies device types and capabilities without manual intervention
- Real-time Telemetry: Displays parsed device information as you work
- Network Mapping: Automatically generates network topology diagrams
- Cross-Platform: Supports network devices (Cisco, etc.) and Linux systems
- Extensible: Template-based fingerprinting system allows easy addition of new device types
The application is built on three main components:
-
Terminal Interface:
- Built using Tkinter/ttk for cross-platform compatibility
- Split-pane design with terminal on left, discovery/telemetry on right
- Supports multiple concurrent sessions via tabs
-
Device Discovery Engine:
- Uses TextFSM templates for pattern matching
- SQLite database stores device templates and fingerprints
- Scoring engine ranks template matches for accurate device identification
-
Network Visualization:
- Generates network topology maps based on discovered connections
- Interactive visualization with zoom and pan capabilities
- Supports different layout algorithms
-
Initial Connection:
- Establishes SSH session
- Sends platform-agnostic commands first (Linux)
- Falls back to network device commands
-
Template Matching:
- Processes command output through TextFSM templates
- Each template generates a confidence score
- Best matching template determines device type
-
Data Extraction:
- Parses device-specific information using matched template
- Extracts key data points (OS, version, hardware, etc.)
- Updates real-time display
- Organized by command patterns (show version, system info, etc.)
- Each template includes:
- Command patterns
- Expected output format
- Field definitions
- Parsing rules
- Confidence scoring based on successful field matches
- Rapid device identification and documentation
- Interactive troubleshooting with real-time data parsing
- Automatic network topology mapping
- Unified interface for both network and Linux systems
- Automatic system information collection
- Consistent interface across different platforms
- Integration with existing automation tools
- Template-based extensibility
- Cross-platform compatibility
pip install -r requirements.txt
python main.py
- Create TextFSM template file
- Add template to database:
python add_template.py <template_file> <command_type>
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.
- TextFSM for template-based text parsing
- PySSHPass for SSH connectivity
- NetworkX for topology mapping
- Additional platform support
- Enhanced telemetry collection
- API for external integration
- Configuration management features
- Custom template editor
Existing solutions typically focus on either terminal access, network monitoring, or automation - but rarely combine these effectively. This project aims to provide:
- Reduced Tool Sprawl: One interface for terminal access, device discovery, and visualization
- Automatic Documentation: Device information and network topology captured automatically
- Real-Time Intelligence: Immediate access to parsed device information while working
- Extensible Platform: Template-based system allows easy addition of new device types
- Cross-Platform Support: Same interface works for network devices and Linux systems
The goal is to streamline network operations by combining the most frequently used tools into a single, efficient interface.