Awesome Open Source
Awesome Open Source

============== ciscoconfparse

.. image:: :target: :alt: Travis CI Status

.. image:: :target: :alt: Version

.. image:: :target: :alt: Downloads

.. image:: :target: :alt: License

.. contents::

.. _introduction:

Introduction: What is ciscoconfparse?

Short answer: ciscoconfparse is a Python_ library that helps you quickly answer questions like these about your 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.

.. image:: :target: :alt: CiscoConfParse Parent / Child relationships


The following code will parse a configuration stored in 'exampleswitch.conf' and select interfaces that are shutdown.

.. code:: python

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.

.. code:: python

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))

What if we don't use Cisco?

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
  • Terraform .tf files

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
  • Brocade
  • HP Switches
  • Force 10 Switches
  • Dell PowerConnect Switches
  • Extreme Networks
  • Enterasys
  • Screenos


  • The latest copy of the docs are archived on the web <>_
  • There is also a CiscoConfParse Tutorial <>_

.. _Pre-Requisites:


ciscoconfparse_ requires Python versions 3.5+ (note: version 3.7.0 has a bug - ref Github issue #117, but version 3.7.1 works); the OS should not matter.

.. _Installation:

Installation and Downloads

You can install into Python2.x with pip_:


  pip install --upgrade ciscoconfparse

Use pip3 for Python3.x...


  pip3 install --upgrade ciscoconfparse

If you don't want to use pip_, you can install with easy_install:


  easy_install -U ciscoconfparse

Otherwise download it from PyPi <>_, extract it and run the script:


  python install

If you're interested in the source, you can always pull from the github repo_ or bitbucket repo_:

  • From github_: ::

    git clone git://
    cd ciscoconfparse/
    pip install .

.. _Other-Resources:

Other Resources

  • Dive into Python3_ is a good way to learn Python
  • Team CYMRU_ has a Secure IOS Template_, which is especially useful for external-facing routers / switches
  • Cisco's Guide to hardening IOS devices_
  • Center for Internet Security Benchmarks_ (An email address, cookies, and javascript are required)

.. _Bug-Tracker-and-Support:

Bug Tracker and Support

  • Please report any suggestions, bug reports, or annoyances with ciscoconfparse_ through the github bug tracker_.
  • If you're having problems with general python issues, consider searching for a solution on Stack Overflow. If you can't find a solution for your problem or need more help, you can ask a question.
  • If you're having problems with your Cisco devices, you can open a case with Cisco TAC; if you prefer crowd-sourcing, you can ask on the Stack Exchange Network Engineering site.

.. _Unit-Tests:


Travis CI project <>_ tests ciscoconfparse on Python versions 3.5 and higher, as well as a pypy JIT_ executable.

Click the image below for details; the current build status is:

.. image:: :align: center :target: :alt: Travis CI Status

.. _License and Copyright:

License and Copyright

ciscoconfparse_ is licensed GPLv3_; Copyright David Michael Pennington_, 2007-2021.

ciscoconfparse_ is not affiliated with Cisco Systems in any way; the word "Cisco" is a registered trademark of Cisco Systems

.. _Author:

Author and Thanks

ciscoconfparse_ was written by David Michael Pennington (mike [at] pennington [/dot] net).

Special thanks:

  • Thanks to David Muir Sharnoff for his suggestion about making a special case for IOS banners.
  • Thanks to Alan Cownie for his API suggestions.
  • Thanks to CrackerJackMack_ for reporting Github Issue #13_
  • Soli Deo Gloria

.. _ciscoconfparse:

.. _Python:

.. _pypy JIT:

.. _Github Issue #13:

.. _Github Issue #14:

.. _Github Issue #17:

.. _brace-delimited configurations:

.. _CrackerJackMack:

.. _David Michael Pennington:

.. _setuptools:

.. _pip:

.. _virtualenv:

.. _github repo:

.. _bitbucket repo:

.. _bitbucket:

.. _github:

.. _mercurial:

.. _github bug tracker:

.. _hg-git:

.. _regular expressions:

.. _docs:

.. _ipaddr:

.. _GPLv3:

.. _ASF License 2.0:

.. _Dive into Python3:

.. _Network Engineering:

.. _Stack Overflow:

.. _ask a question:

.. _ciscoconfparse NetworkToCode slack channel:

.. _Secure IOS Template:

.. _Center for Internet Security Benchmarks:

.. _Team CYMRU:

.. _Cisco TAC:

.. _Juniper networks:

.. _Cisco's Guide to hardening IOS devices:

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
python (55,343
automation (736
router (304
parse (124
switch (104
firewall (92