Skip to content

minaa66/reporter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

7 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

NetDocAI - Intelligent Network Documentation System

Python Version License

A comprehensive Python-based network automation tool that connects to network devices, collects detailed information, analyzes configurations, and generates professional documentation reports suitable for network audits, compliance, and operational reference.

🌟 Features

  • Multi-Vendor Support: Cisco IOS/IOS-XE/NX-OS, Aruba ArubaOS-Switch/ArubaOS-CX, HP ProCurve, and extensible for other vendors
  • Subnet Discovery: Automatically discover devices on a network subnet
  • Dynamic Inventory: Scan subnets without pre-configured inventory files
  • Parallel Collection: Concurrent data collection from multiple devices
  • Comprehensive Analysis: Security analysis, configuration checks, and best practices validation
  • Multiple Report Formats: HTML, Excel, and Markdown reports
  • Configuration Backup: Automatic configuration backup with version control
  • Configuration Comparison: Track and compare configuration changes over time
  • Secure Credential Management: Encrypted storage of device credentials

πŸ“‹ Requirements

  • Python 3.8 or higher
  • Network access to devices
  • SSH credentials for devices

πŸš€ Quick Start

Installation

  1. Clone the repository:
git clone https://github.com/netdocai/netdocai.git
cd netdocai
  1. Install dependencies:
pip install -r requirements.txt
  1. Install NetDocAI:
pip install -e .

Configuration

  1. Copy the environment template:
cp .env.example .env
  1. Generate an encryption key:
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
  1. Edit .env and add your encryption key and default credentials

  2. Create your device inventory in config/devices.yaml OR use subnet discovery

Usage

Discover Devices on a Subnet

# Discover devices and save to inventory file
netdocai discover --subnet 172.0.66.0/24 --username cisco --password cisco --enable-secret cisco

 # Discover and scan in one command
netdocai scan --subnet 172.0.66.0/24 --username cisco --password cisco --enable-secret cisco

Scan Network Devices from Inventory

netdocai scan --inventory config/devices.yaml --output ./reports

Compare Configurations

netdocai compare --device core-sw-01 --old 20240101_120000 --new latest

Generate Reports

# HTML and Excel reports
netdocai scan --inventory config/devices.yaml --format html --format excel

# HTML only
netdocai scan --inventory config/devices.yaml --format html

πŸ“Š Sample Output

NetDocAI generates comprehensive reports including:

  • Executive Summary: High-level overview with statistics and health scores
  • Device Inventory: Complete list of all network devices
  • Individual Device Reports: Detailed information for each device
    • Device information and specifications
    • Interface details and status
    • Routing configuration
    • VLAN information
    • Security configuration
    • Analysis results and recommendations

πŸ”§ Configuration

Device Inventory (config/devices.yaml)

devices:
  - hostname: core-sw-01
    ip_address: 192.168.1.10
    device_type: cisco_ios
    username: admin
    location: Data Center
    role: Core Switch

Settings (config/settings.yaml)

connection:
  timeout: 30
  max_workers: 10

output:
  directory: ./reports
  backup_directory: ./backups

logging:
  level: INFO
  file: ./logs/netdocai.log

πŸ—οΈ Architecture

NetDocAI/
β”œβ”€β”€ netdocai/
β”‚   β”œβ”€β”€ collectors/      # Device connection and data collection
β”‚   β”œβ”€β”€ parsers/        # Output parsing and data models
β”‚   β”œβ”€β”€ analyzers/      # Configuration analysis
β”‚   β”œβ”€β”€ reporters/      # Report generation
β”‚   β”œβ”€β”€ storage/        # Data persistence
β”‚   β”œβ”€β”€ utils/          # Utilities and helpers
β”‚   └── cli/            # Command-line interface
β”œβ”€β”€ config/             # Configuration files
β”œβ”€β”€ templates/          # Report templates
β”œβ”€β”€ tests/              # Test suite
└── docs/               # Documentation

πŸ”’ Security

  • Credentials are encrypted using Fernet encryption
  • SSH key-based authentication supported
  • Read-only access to devices recommended
  • Sensitive data sanitized in reports
  • Audit logging for all actions

πŸ“– Documentation

πŸ§ͺ Testing

Run tests with pytest:

pytest tests/ -v

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“ License

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

πŸ™ Acknowledgments

  • Built with Netmiko for multi-vendor SSH connections
  • Uses TextFSM for parsing network device outputs
  • Report generation powered by Jinja2

πŸ“§ Support

For issues and questions:

πŸ—ΊοΈ Roadmap

  • Web UI dashboard
  • Additional vendor support (Juniper, Arista, HP)
  • Network topology visualization
  • Compliance framework (CIS, PCI-DSS, NIST)
  • Integration with ServiceNow, Slack
  • ML-based anomaly detection
  • Multi-tenancy support

NetDocAI - Making network documentation effortless

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors