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: support@snatt.dev (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