Parse, Audit, Query, Build, and Modify Cisco IOS-style configurations.
Short answer: ciscoconfparse is a Python library that helps you quickly answer questions like these about your Cisco configurations:
It can help you:
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.
from ciscoconfparse import CiscoConfParse
parse = CiscoConfParse('exampleswitch.conf', syntax='ios')
for intf_obj in parse.find_objects_w_child('^interface', '^\s+shutdown'):
print("Shutdown: " + intf_obj.text)
The next example will find the IP address assigned to interfaces.
from ciscoconfparse import CiscoConfParse
parse = CiscoConfParse('exampleswitch.conf', syntax='ios')
for intf_obj in parse.find_objects('^interface'):
intf_name = intf_obj.re_match_typed('^interface\s+(\S.+?)$')
# Search children of all interfaces for a regex match and return
# the value matched in regex match group 1. If there is no match,
# return a default value: ''
intf_ip_addr = intf_obj.re_match_iter_typed(
r'ip\saddress\s(\d+\.\d+\.\d+\.\d+)\s', result_type=str,
group=1, default='')
print("{0}: {1}".format(intf_name, intf_ip_addr))
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:
CiscoConfParse also handles anything that has a Cisco IOS style of configuration, which includes:
git clone https://github.com/mpenning/ciscoconfparse
cd ciscoconfparse
git checkout -b develop
develop
branchmake test
git commit
all the pending changes on the develop
branchgit checkout main
git merge develop
make test
make repo-push
make pypi
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.
Use poetry
for Python3.x... :
python -m pip install ciscoconfparse
If you're interested in the source, you can always pull from the github repo:
Download from the github repo: :
git clone git://github.com/mpenning/ciscoconfparse
cd ciscoconfparse/
python -m pip install .
The project's test workflow checks ciscoconfparse on Python versions 3.6 and higher, as well as a pypy JIT executable.
Click the image below for details; the current build status is:
Building the ciscoconfparse documentation tarball comes down to this one wierd trick:
cd sphinx-doc/
pip install -r ./requirements.txt; # install Sphinx dependencies
pip install -r ../requirements.txt; # install ccp dependencies
make html
ciscoconfparse is licensed GPLv3
The word "Cisco" is a registered trademark of Cisco Systems.
ciscoconfparse was written by David Michael Pennington (mike [~at~] pennington [.dot.] net).