β Star us on GitHub β your support motivates us a lot! ππ
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:
Features:
| 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 | β | β |
βββββββββββββββββββ
β Your App/Tool β
ββββββββββ¬βββββββββ
β HTTP API
βΌ
βββββββββββββββββββ
β NetDriver Agent β
ββββββββββ¬βββββββββ
β SSH
ββββββ΄βββββ
β β
βΌ βΌ
ββββββββββ ββββββββββ
βSimuNet β β Real β
βDevices β β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.
| 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 |
The plugin system allows for easy extension and customization:
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.
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.
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.
This project is licensed under the Apache License 2.0.
We look forward to assisting you and ensuring your experience with our products is successful and enjoyable!