Menu β–Ύ β–΄

Tree [4bd292] master /
 History

HTTPS access


File Date Author Commit
 .github 2025-10-31 Vincent Bergman Vincent Bergman [3af189] chore: consolidate releases 0.3.1 to 0.3.14
 .vscode 2025-10-07 vincent vincent [fdba66] Init commit.
 bases 2025-10-31 Vincent Bergman Vincent Bergman [3af189] chore: consolidate releases 0.3.1 to 0.3.14
 components 2025-10-29 Vincent Bergman Vincent Bergman [a3ef5a] chord: fix build-test workflow.
 config 2025-10-29 Vincent Bergman Vincent Bergman [978acc] chore: remove hardcoded SSH host_key from repos...
 development 2025-10-07 vincent vincent [fdba66] Init commit.
 docs 2025-10-31 Vincent Bergman Vincent Bergman [3af189] chore: consolidate releases 0.3.1 to 0.3.14
 projects 2025-10-31 Vincent Bergman Vincent Bergman [3d7a2e] chore: bump simunet version to 0.4.0
 scripts 2025-10-31 Vincent Bergman Vincent Bergman [3af189] chore: consolidate releases 0.3.1 to 0.3.14
 tests 2025-10-30 Vincent Bergman Vincent Bergman [471db0] test: change thread to process for simulated dev.
 .dockerignore 2025-10-30 Vincent Bergman Vincent Bergman [36736f] chord: update release workflows to support image.
 .gitignore 2025-10-29 Vincent Bergman Vincent Bergman [43577d] chord: add workflows.
 CLAUDE.md 2025-10-28 Vincent Vincent [614446] feat: separate agent and simunet logs with modu...
 CONTRIBUTING.md 2025-10-31 Vincent Bergman Vincent Bergman [3af189] chore: consolidate releases 0.3.1 to 0.3.14
 LICENSE 2025-10-07 vincent vincent [fdba66] Init commit.
 README.md 2025-11-24 PanMarkCake PanMarkCake [4bd292] Update README.md
 conftest.py 2025-10-07 vincent vincent [fdba66] Init commit.
 poetry.lock 2025-10-29 Vincent Bergman Vincent Bergman [a3ef5a] chord: fix build-test workflow.
 poetry.toml 2025-10-07 vincent vincent [fdba66] Init commit.
 pyproject.toml 2025-10-29 Vincent Bergman Vincent Bergman [a3ef5a] chord: fix build-test workflow.
 workspace.toml 2025-10-07 vincent vincent [fdba66] Init commit.

Read Me

NetDriver

Python
Poetry
License
Build & Test
Contributions Welcome
Last Commit
Release
Release Date
Discord

⭐ Star us on GitHub β€” your support motivates us a lot! πŸ™πŸ˜Š

Share
Share
Share
Share
Share

Table of Contents

About

NetDriver is an advanced open-source framework for automating network devices. Its main purpose is to use a high-level HTTP RESTful interface to make it easier to execute low-level commands on different networking equipment. This architecture makes it easier to develop generalised automation solutions and integrate third parties. Its design is centred on features that guarantee operational efficiency and stability, such as advanced session management that keeps persistent connections to enhance system performance and a command queue to avoid configuration conflicts during concurrent operations. Its plugin architecture enables simple extensibility to support a broad and changing range of vendor hardware, and its asynchronous foundation provides desirable concurrency.

NetDriver adopts a Monorepo architecture consisting of multiple sub-projects:

  • netdriver-agent - Provides REST APIs for device connectivity testing and command execution
  • netdriver-simunet - Simulates network device terminals for automated testing and other scenarios requiring device emulation

Features:

  • 🌐 HTTP RESTful API : Easy integration with third-party platforms
  • πŸ”„ Session Management : Customizable session persistence for improved efficiency, eliminating repeated connections per command
  • πŸ“‹ Command Queue : Ensures sequential command execution on devices, preventing configuration errors and failures caused by concurrent modifications
  • ⚑ AsyncSSH Foundation : Superior concurrency capabilities through asynchronous SSH implementation
  • πŸ”Œ Plugin Architecture : Simplified and accelerated development of new vendor support

Comparison

Feature NetDriver Netmiko
HTTP RESTful API for third-party integration βœ… ❌
Session persistence with customizable duration βœ… ❌
Python-based implementation βœ… βœ…
Command execution queue to prevent concurrent conflicts βœ… ❌
Plugin architecture for easier device support development βœ… βœ…
Standard CLI automation βœ… βœ…
Open source βœ… βœ…
AsyncSSH-based architecture for high concurrency βœ… ❌

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Your App/Tool  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ HTTP API
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ NetDriver Agent β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ SSH
    β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”
    β”‚         β”‚
    β–Ό         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚SimuNet β”‚ β”‚ Real   β”‚
β”‚Devices β”‚ β”‚Devices β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Support Devices

NetDriver currently supports a wide range of network devices from major vendors. The plugin architecture makes it easy to add support for new devices.

Supported Vendors and Models

Vendor Model Device Type Description
Cisco ASA Firewall Cisco Adaptive Security Appliance
ASR Router Cisco Aggregation Services Router
Catalyst Switch Cisco Catalyst Series Switches
ISR Router Cisco Integrated Services Router
Nexus Switch Cisco Nexus Data Center Switches
Huawei CE Switch Huawei CloudEngine Series Switches
USG Firewall Huawei Unified Security Gateway
Juniper EX Switch Juniper EX Series Ethernet Switches
MX Router Juniper MX Series Universal Routing Platforms
QFX Switch Juniper QFX Series Data Center Switches
SRX Firewall Juniper SRX Series Services Gateways
Fortinet FortiGate Firewall Fortinet FortiGate Next-Generation Firewalls
Palo Alto PA Firewall Palo Alto Networks Next-Generation Firewalls
Arista EOS Switch Arista Networks EOS-based Switches
H3C SecPath Firewall H3C SecPath Series Firewalls
VSR Router H3C Virtual Services Router
Check Point Security Gateway Firewall Check Point Security Gateway
Hillstone SG Firewall Hillstone StoneOS-based Security Gateways
DPTech FW Firewall DPTech Firewall Series
Topsec NGFW Firewall Topsec Next-Generation Firewalls
Venustech USG Firewall Venustech Unified Security Gateway
Maipu NSS Switch Maipu Network Security Switch
Array AG Gateway Array Application Gateway
Chaitin CTD-SG Gateway Chaitin SafeLine Security Gateway
Qianxin NSG Gateway Qianxin Next-Generation Security Gateway
Leadsec PowerV Firewall Leadsec PowerV Series

Plugin Architecture

The plugin system allows for easy extension and customization:

  • Vendor Base Plugins: Common functionality shared across device models from the same vendor
  • Model-Specific Plugins: Device-specific implementations for unique features and behaviors
  • Pattern Matching: Automatic plugin selection based on vendor/model/version detection
  • Extensible: Add new device support by creating a new plugin class

Adding Device Support

To add support for a new device, create a plugin in components/netdriver/plugins/{vendor}/ that inherits from the vendor base class or Base plugin. See Development Guidelines for more information.

Quick Start

We can first run the Simunet service to obtain simulated network devices for testing, then use the Agent to connect and execute commands. Of course, if you have real devices that are on the support devices, you can skip the Simunet guide and start using the Agent service directly.

Contributions and Requests

Your contributions matter!Our project can always be better so we would be happy to recive your help!Please take a look at contributing guide before submiting a pull request!
For questions, issues, or feature requests, please open an issue on the project repository.

License

This project is licensed under the Apache License 2.0.

Contacts

We look forward to assisting you and ensuring your experience with our products is successful and enjoyable!

Join our groupchats to recive latest updates and engage in discussions!

Discord
LinkedIn
TikTok
YouTube
Facebook
Instagram

Back to top