Skip to content

AriBermeki/SNATT

Β 
Β 

Repository files navigation

SNATT - Smart Network Automation and Troubleshooting Tool

Version Python React License

🎯 Overview

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.

✨ Key Features

  • πŸ” 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

πŸš€ Quick Start

Desktop Application (Python)

Prerequisites:

  • Python 3.8 or higher
  • pip package manager
  • Network access to devices you want to manage

Installation:

  1. Clone the repository:

    git clone https://github.com/LingeshwarKulal/SNATT.git
    cd SNATT
  2. Create a virtual environment (recommended):

    python -m venv venv
    .\venv\Scripts\Activate.ps1
  3. Install dependencies:

    pip install -r requirements.txt
  4. Run the application:

    python src/main.py

Web Application (React + Vite)

Prerequisites:

  • Node.js 18+ and npm

Local Development:

  1. Navigate to React app:

    cd snatt-react
  2. Install dependencies:

    npm install
  3. Run development server:

    npm run dev

    Visit http://localhost:5173

  4. Build for production:

    npm run build

Deploy to Vercel:

  1. Go to vercel.com
  2. Import LingeshwarKulal/SNATT
  3. Set Root Directory to snatt-react
  4. Deploy!

See REACT_DEPLOYMENT.md for detailed instructions.

πŸ“ Project Structure

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

πŸ› οΈ Technology Stack

  • 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

πŸ“– Usage Guide

1. Network Discovery

  1. Launch SNATT and navigate to the Discovery tab
  2. Enter your subnet (e.g., 192.168.1.0/24)
  3. Click Scan Network
  4. Review discovered devices in the results table
  5. Select devices and click Connect

2. Run Diagnostics

  1. Navigate to the Diagnostics tab
  2. Select one or more connected devices
  3. Choose a diagnostic workflow (Interface Health, CPU Check, etc.)
  4. Click Run Diagnostics
  5. Review results with color-coded indicators

3. Backup Configurations

  1. Navigate to the Backup tab
  2. Select devices to backup
  3. Choose configuration type (running/startup)
  4. Click Backup Now
  5. View backup history and compare versions

4. Generate Reports

  1. Navigate to the Reports tab
  2. Select report type and date range
  3. Choose export format (Excel/PDF)
  4. Click Generate Report
  5. Report opens automatically

πŸ”’ Security

  • 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

πŸ§ͺ Testing

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

πŸ“Š Supported Devices

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

πŸ› Troubleshooting

Common Issues

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

Logs

Application logs are stored in logs/snatt.log. Check this file for detailed error messages.

🀝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Code Standards

  • Follow PEP 8 style guide
  • Add docstrings to all functions
  • Write unit tests for new features
  • Update documentation as needed

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ—ΊοΈ Roadmap

Phase 1 - MVP (v0.1) βœ… Current

  • Project structure
  • Basic network discovery
  • SSH connection to Cisco devices
  • Simple configuration backup
  • Basic GUI

Phase 2 - Core Features (v1.0)

  • Multi-vendor support
  • Complete troubleshooting workflows
  • Batch operations
  • Excel/PDF reporting
  • Full GUI implementation

Phase 3 - Advanced (v1.5)

  • Configuration diff viewer
  • Scheduled backups
  • Custom workflows
  • API integrations

Phase 4 - Enterprise (v2.0)

  • Multi-user support
  • Web dashboard
  • SNMP monitoring
  • ML anomaly detection

πŸ“ž Support

  • Documentation: docs/
  • Issues: Report bugs and feature requests in the Issues section
  • Email: [email protected] (placeholder)

πŸ™ Acknowledgments

  • Built with CustomTkinter
  • Network automation powered by Netmiko
  • Inspired by the network engineering community

Made with ❀️ for Network Engineers

Last Updated: October 5, 2025

About

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 89.3%
  • JavaScript 8.2%
  • CSS 2.4%
  • HTML 0.1%