Skip to content

NetDriver is a project designed for connecting network devices and executing CLI commands. Developers can make calls through the HTTP RESTful interface, which simplifies the development of network device automation and enhances security.

License

Notifications You must be signed in to change notification settings

OpenSecFlow/netdriver

Repository files navigation

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

About

NetDriver is a project designed for connecting network devices and executing CLI commands. Developers can make calls through the HTTP RESTful interface, which simplifies the development of network device automation and enhances security.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors 5

Languages