SNATT is available as both a desktop application (Python + CustomTkinter) and a web application (React + Vite). Choose the version that fits your needs:
- Desktop: Direct SSH connections, local operations, full network device access
- Web: Browser-based, no installation, team collaboration, Vercel-deployable
Both versions share the same 5 core panels: Discovery, Diagnostics, Backup, Reports, and Settings.
- π Automated Network Discovery - Scan subnets and identify routers/switches automatically
- π Secure Connection Management - SSH-based connections with encrypted credential storage
- π§° Intelligent Troubleshooting - Execute diagnostic workflows and identify issues automatically
- πΎ Configuration Backup - Batch backup with version control and timestamping
- π Professional Reporting - Generate Excel/PDF reports with health summaries
- π₯οΈ Modern GUI - Intuitive interface with color-coded status indicators
Prerequisites:
- Python 3.8 or higher
- pip package manager
- Network access to devices you want to manage
Installation:
-
Clone the repository:
git clone https://github.com/LingeshwarKulal/SNATT.git cd SNATT
-
Create a virtual environment (recommended):
python -m venv venv .\venv\Scripts\Activate.ps1 -
Install dependencies:
pip install -r requirements.txt -
Run the application:
python src/main.py
Prerequisites:
- Node.js 18+ and npm
Local Development:
-
Navigate to React app:
cd snatt-react -
Install dependencies:
npm install
-
Run development server:
npm run dev
Visit http://localhost:5173
-
Build for production:
npm run build
Deploy to Vercel:
- Go to vercel.com
- Import
LingeshwarKulal/SNATT - Set Root Directory to
snatt-react - Deploy!
See REACT_DEPLOYMENT.md for detailed instructions.
automa/
βββ src/ # Source code
β βββ main.py # Application entry point
β βββ gui/ # GUI components
β β βββ main_window.py
β β βββ discovery_panel.py
β β βββ diagnostics_panel.py
β β βββ backup_panel.py
β β βββ reports_panel.py
β β βββ settings_panel.py
β βββ engines/ # Core business logic
β β βββ discovery_engine.py
β β βββ connection_manager.py
β β βββ troubleshooting_engine.py
β β βββ backup_manager.py
β β βββ reporting_engine.py
β βββ models/ # Data models
β β βββ device.py
β β βββ diagnostic_result.py
β β βββ backup_record.py
β βββ utils/ # Utility functions
β β βββ logger.py
β β βββ credential_manager.py
β β βββ config_manager.py
β β βββ validators.py
β βββ resources/ # Static resources
β βββ icons/
β βββ templates/
βββ tests/ # Test suite
β βββ unit/
β βββ integration/
β βββ test_data/
βββ backups/ # Device configuration backups
βββ reports/ # Generated reports
βββ logs/ # Application logs
βββ docs/ # Documentation
β βββ user_guide.md
β βββ api_reference.md
β βββ architecture.md
βββ config/ # Configuration files
β βββ default_config.json
βββ requirements.txt # Python dependencies
βββ setup.py # Package setup
βββ .gitignore # Git ignore rules
βββ LICENSE # MIT License
βββ PRD.md # Product Requirements Document
βββ README.md # This file
- GUI Framework: CustomTkinter (modern themed UI)
- Network Automation: Netmiko, NAPALM, Paramiko
- Network Discovery: Scapy, PySNMP
- Reporting: Pandas, OpenPyXL, ReportLab
- Data Storage: SQLite, JSON
- Security: Keyring (credential encryption)
- Testing: Pytest
- Code Quality: Black, Flake8
- Launch SNATT and navigate to the Discovery tab
- Enter your subnet (e.g.,
192.168.1.0/24) - Click Scan Network
- Review discovered devices in the results table
- Select devices and click Connect
- Navigate to the Diagnostics tab
- Select one or more connected devices
- Choose a diagnostic workflow (Interface Health, CPU Check, etc.)
- Click Run Diagnostics
- Review results with color-coded indicators
- Navigate to the Backup tab
- Select devices to backup
- Choose configuration type (running/startup)
- Click Backup Now
- View backup history and compare versions
- Navigate to the Reports tab
- Select report type and date range
- Choose export format (Excel/PDF)
- Click Generate Report
- Report opens automatically
- Credential Storage: Encrypted using OS keyring
- Communication: SSH only (no plaintext protocols)
- Audit Logging: All actions logged with timestamps
- Input Validation: All user inputs sanitized
Run the test suite:
# All tests
pytest
# Unit tests only
pytest tests/unit/
# Integration tests
pytest tests/integration/
# With coverage report
pytest --cov=src --cov-report=html| Vendor | Status | Notes |
|---|---|---|
| Cisco IOS | β Full Support | All IOS versions |
| Cisco IOS-XE | β Full Support | ISR, ASR series |
| Cisco NX-OS | β Full Support | Nexus switches |
| Juniper Junos | π‘ Tested | Basic operations |
| HP/Aruba | π‘ Tested | ProCurve, ArubaOS |
| Huawei | π‘ Community | VRP platform |
| MikroTik | π‘ Community | RouterOS |
Problem: Application won't start
- Solution: Ensure Python 3.8+ is installed, check
python --version
Problem: Cannot discover devices
- Solution: Check network connectivity, firewall rules, ICMP enabled
Problem: SSH connection fails
- Solution: Verify credentials, ensure SSH enabled on devices, check port 22
Problem: Reports not generating
- Solution: Check write permissions in reports/ directory
Application logs are stored in logs/snatt.log. Check this file for detailed error messages.
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PEP 8 style guide
- Add docstrings to all functions
- Write unit tests for new features
- Update documentation as needed
This project is licensed under the MIT License - see the LICENSE file for details.
- Project structure
- Basic network discovery
- SSH connection to Cisco devices
- Simple configuration backup
- Basic GUI
- Multi-vendor support
- Complete troubleshooting workflows
- Batch operations
- Excel/PDF reporting
- Full GUI implementation
- Configuration diff viewer
- Scheduled backups
- Custom workflows
- API integrations
- Multi-user support
- Web dashboard
- SNMP monitoring
- ML anomaly detection
- Documentation: docs/
- Issues: Report bugs and feature requests in the Issues section
- Email: [email protected] (placeholder)
- Built with CustomTkinter
- Network automation powered by Netmiko
- Inspired by the network engineering community
Made with β€οΈ for Network Engineers
Last Updated: October 5, 2025