skip to navigation
skip to content

ciscoconfparse 1.2.47

Parse, Audit, Query, Build, and Modify Cisco IOS-style configurations


.. image::
:alt: Travis CI Status

.. image::
:alt: Version

.. image::
:alt: License

.. contents::

.. _introduction:

Introduction: What is ciscoconfparse?

ciscoconfparse is a Python_ library, which parses through Cisco IOS-style
(and other vendor) configurations. It can:

- Audit existing router / switch / firewall / wlc configurations
- Retrieve portions of the configuration
- Modify existing configurations
- Build new configurations

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

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

User Testimony

These are a few selected public mentions about CiscoConfParse; I usually try not to share private emails without asking, thus the quotes aren't long at this time.

.. image::
:alt: CiscoConfParse Github Issue #17

.. image::
:alt: Reddit comment

.. image::
:alt: Netnea testimony

.. image::
:alt: Twitter mentions

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 understands these configurations:

- Juniper Networks Junos, and Screenos
- F5 Networks configurations
"{{ mgmt_password }}"
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


- The latest copy of the docs are `archived on the web <http:"" py="" ciscoconfparse=""/>`_
- There is also a `CiscoConfParse Tutorial <http:"" tutorial="" ciscoconfparse="" ccp_tutorial.html="">`_

.. _Pre-Requisites:


ciscoconfparse_ requires Python versions 2.6, 2.7 or 3.2+; the OS should not
matter. If you want to run it under a Python virtualenv_, it's been heavily
tested in that environment as well.

.. _Installation:

Installation and Downloads

The best way to get ciscoconfparse is with setuptools_ or pip_. If you
already have setuptools_, you can install as usual:


# Substitute whatever ciscoconfparse version you like...
easy_install -U ciscoconfparse==1.2.47

Alternatively you can install into Python2.x with pip_:


pip install --upgrade ciscoconfparse

Use ``pip3`` for Python3.x...


pip3 install --upgrade ciscoconfparse

Otherwise `download it from PyPi <https:"" pypi="" ciscoconfparse="">`_, 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://

- From bitbucket_:

hg init
hg clone

.. _FAQ:


#) *QUESTION*: I want to use ciscoconfparse_ with Python3; is that safe? *ANSWER*: As long as you're using Python 3.3 or higher, it's safe. I test every release against Python 3.2+; however, Python 3.2 is currently exposed to a small bug for some configurations (see `Github Issue #14`_).

#) *QUESTION*: Some of the code in the documentation looks different than what I'm used to seeing. Did you change something? *ANSWER*: Yes, starting around ciscoconfparse_ v0.9.10 I introducted more methods directly on ``IOSConfigLine()`` objects; going forward, these methods are the preferred way to use ciscoconfparse_. Please start using the new methods shown in the example, since they're faster, and you type much less code this way.

#) *QUESTION*: ciscoconfparse_ saved me a lot of time, I want to give money. Do you have a donation link? *ANSWER*: I love getting emails like this; helping people get their jobs done is why I wrote the module. However, I'm not accepting donations.

#) *QUESTION*: Is there a way to use this module with perl? *ANSWER*: Yes, I do this myself. Install the python package as you normally would and import it into perl with ```` and ``Inline::Python`` from CPAN.

#) *QUESTION*: When I use ``find_children("interface GigabitEthernet3/2")``, I'm getting all interfaces beginning with 3/2, including 3/21, 3/22, 3/23 and 3/24. How can I limit my results? *ANSWER*: There are two ways... the simplest is to use the 'exactmatch' option... ``find_children("interface GigabitEthernet3/2", exactmatch=True)``. Another way is to utilize regex expansion that is native to many methods... ``find_children("interface GigabitEthernet3/2$")``

.. _`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 <https:"">`_ tests ciscoconfparse on Python versions 2.6 through 3.5, as well as a `pypy JIT`_ executable.

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

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

.. _`License and Copyright`:

License and Copyright

ciscoconfparse_ is licensed GPLv3_; Copyright `David Michael Pennington`_,

.. _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`:

.. _`Secure IOS Template`:

.. _`Center for Internet Security Benchmarks`:

.. _`Team CYMRU`:

.. _`Cisco TAC`:

.. _`Juniper networks`:

.. _`Cisco's Guide to hardening IOS devices`:

File Type Py Version Uploaded on Size
ciscoconfparse-1.2.47-py2-none-any.whl (md5) Python Wheel 2.7 2017-03-06 83KB
ciscoconfparse-1.2.47.tar.gz (md5) Source 2017-03-06 87KB