Introduction: What is ciscoconfparse?
Short answer: ciscoconfparse is a Python library that helps you quickly answer questions like these about your Cisco configurations:
- What interfaces are shutdown?
- Which interfaces are in trunk mode?
- What address and subnet mask is assigned to each interface?
- Which interfaces are missing a critical command?
- Is this configuration missing a standard config line?
It can help you:
- Audit existing router / switch / firewall / wlc configurations
- Modify existing configurations
- Build new configurations
Speaking generally, the library examines an IOS-style config and breaks it into a set of linked parent / child relationships. You can perform complex queries about these relationships.
The following code will parse a configuration stored in ‘exampleswitch.conf’ and select interfaces that are shutdown.
The next example will find the IP address assigned to interfaces.
Are there private copies of CiscoConfParse()?
Yes. Cisco Systems maintains their own copy of CiscoConfParse(). The terms of the GPLv3 license allow this as long as they don’t distribute their modified private copy in binary form. Also refer to this GPLv3 License primer / GPLv3 101. Officially, modified copies of CiscoConfParse source-code must also be licensed as GPLv3.
Dear Cisco Systems: please consider porting your improvements back into the github ciscoconfparse repo.
Is this a tool, or is it artwork?
That depends on who you ask. Many companies use CiscoConfParse as part of their network engineering toolbox; others regard it as a form of artwork.
What if we don’t use Cisco IOS?
Don’t let that stop you.
As of CiscoConfParse 1.2.4, you can parse brace-delimited configurations into a Cisco IOS style (see Github Issue #17), which means that CiscoConfParse can parse these configurations:
- Juniper Networks Junos
- Palo Alto Networks Firewall configurations
- F5 Networks configurations
CiscoConfParse also handles anything that has a Cisco IOS style of configuration, which includes:
- Cisco IOS, Cisco Nexus, Cisco IOS-XR, Cisco IOS-XE, Aironet OS, Cisco ASA, Cisco CatOS
- Arista EOS
- HP Switches
- Force 10 Switches
- Dell PowerConnect Switches
- Extreme Networks
The ciscoconfparse python package requires Python versions 3.7+ (note: Python version 3.7.0 has a bug – ref Github issue #117, but version 3.7.1 works); the OS should not matter.