It's a Network configuration parser, which translates the show outputs
Project description
Show Configuration Parser (shconfparser)
|Build Status| |GitHub issues open| |License: MIT| |Coverage Status|
Introduction <#introduction>
__Docs <#docs>
__Pre-requisites <#pre-requisites>
__Installation and Downloads <#installation-and-downloads>
__FAQ <#faq>
__Other Resources <#other-resources>
__Bug Tracker and Support <#bug-tracker-and-support>
__Unit-Tests <#unit-tests>
__License and Copyright <#license-and-copyright>
__Author and Thanks <#author-and-thanks>
__
Introduction
Show configuration parser i.e. shconfparser is a Python library, whcih parser Network configurations. This library examines the config and breaks it into a set of parent and clild relationships.
shconfparser is a vendor independent library where you can parse the following formats:
- Tree structure
i.e. show running
- Table structure
i.e. show ip interface
- Data
i.e. show version
Tree Structure
.. figure:: https://github.com/kirankotari/shconfparser/blob/master/asserts/img/sh_run.png :alt: show run to tree structure
show run to tree structure
Table Structure
.. figure:: https://github.com/kirankotari/shconfparser/blob/master/asserts/img/sh_cdp_neighbour.png :alt: show cdp neighbour to table structure
show cdp neighbour to table structure
Docs
How to use shconfparser?
- For Tree structure
.. code:: python
from shconfparser.parser import Parser from os import path file_path = path.abspath('data/shcommands.txt') p = Parser() data = p.read(file_path) # read file content data = p.split(data) # split each show commands and it's data data['running'] = p.parse_tree(data['running']) # translating show running data to tree format p.dump(data['running'], indent=4) # running data in tree format
.. code:: json
{ "R1#sh run": "None", "Building configuration...": "None", "Current configuration : 891 bytes": "None", "version 12.4": "None", "service timestamps debug datetime msec": "None", "service timestamps log datetime msec": "None", "no service password-encryption": "None", "hostname R1": "None", "boot-start-marker": "None", "boot-end-marker": "None", "no aaa new-model": "None", "memory-size iomem 5": "None", "no ip icmp rate-limit unreachable": "None", "ip cef": "None", "no ip domain lookup": "None", "ip auth-proxy max-nodata-conns 3": "None", "ip admission max-nodata-conns 3": "None", "ip tcp synwait-time 5": "None", "l2vpn": { "bridge group test-group": { "bridge-domain test-domain1": { "interface FastEthernet 0/0": { "static-mac-address AB:CD:ED:01": "None" } }, "bridge-domain test-domain2": { "interface FastEthernet 0/1": { "static-mac-address AC:ED:12:34": "None" } } } }, "interface FastEthernet0/0": { "ip address 1.1.1.1 255.255.255.0": "None", "duplex auto": "None", "speed auto": "None" }, "interface FastEthernet0/1": { "no ip address": "None", "shutdown": "None", "duplex auto": "None", "speed auto": "None" }, "ip forward-protocol nd": "None", "no ip http server": "None", "no ip http secure-server": "None", "no cdp log mismatch duplex": "None", "control-plane": "None", "line con 0": { "exec-timeout 0 0": "None", "privilege level 15": "None", "logging synchronous": "None" }, "line aux 0": { "exec-timeout 0 0": "None", "privilege level 15": "None", "logging synchronous": "None" }, "line vty 0 4": { "login": "None" } }
- For Table structure
.. code:: python
header_names = ['Device ID', 'Local Intrfce', 'Holdtme', 'Capability', 'Platform', 'Port ID'] data['cdp_neighbors'] = p.parse_table(data['cdp_neighbors'], header_names=header_names) p.dump(data['cdp_neighbors'], indent=4)
.. code:: json
[ { "Device ID": "R2", "Local Intrfce": "Fas 0/0", "Holdtme": "154", "Capability": "R S I", "Platform": "3725", "Port ID": "Fas 0/0" } ]
- For Data
.. code:: python
data['version'] = p.parse_data(data['version']) p.dump(data['version'], indent=4)
.. code:: json
{ "R1#sh ver": "None", "Cisco IOS Software, 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(25d), RELEASE SOFTWARE (fc1)": "None", "Technical Support: http://www.cisco.com/techsupport": "None", "Copyright (c) 1986-2010 by Cisco Systems, Inc.": "None", "Compiled Wed 18-Aug-10 07:55 by prod_rel_team": "None", "": "None", "ROM: ROMMON Emulation Microcode": "None", "ROM: 3700 Software (C3725-ADVENTERPRISEK9-M), Version 12.4(25d), RELEASE SOFTWARE (fc1)": "None", "R1 uptime is 10 minutes": "None", "System returned to ROM by unknown reload cause - suspect boot_data[BOOT_COUNT] 0x0, BOOT_COUNT 0, BOOTDATA 19": "None", "System image file is "tftp://255.255.255.255/unknown"": "None", "This product contains cryptographic features and is subject to United": "None", "States and local country laws governing import, export, transfer and": "None", "use. Delivery of Cisco cryptographic products does not imply": "None", "third-party authority to import, export, distribute or use encryption.": "None", "Importers, exporters, distributors and users are responsible for": "None", "compliance with U.S. and local country laws. By using this product you": "None", "agree to comply with applicable laws and regulations. If you are unable": "None", "to comply with U.S. and local laws, return this product immediately.": "None", "A summary of U.S. laws governing Cisco cryptographic products may be found at:": "None", "http://www.cisco.com/wwl/export/crypto/tool/stqrg.html": "None", "If you require further assistance please contact us by sending email to": "None", "export@cisco.com.": "None", "Cisco 3725 (R7000) processor (revision 0.1) with 124928K/6144K bytes of memory.": "None", "Processor board ID FTX0945W0MY": "None", "R7000 CPU at 240MHz, Implementation 39, Rev 2.1, 256KB L2, 512KB L3 Cache": "None", "2 FastEthernet interfaces": "None", "DRAM configuration is 64 bits wide with parity enabled.": "None", "55K bytes of NVRAM.": "None", "Configuration register is 0x2102": "None" }
Pre-requisites
shconfparser supports both trains of python 2.7+ and 3.1+
, the
OS should not matter.
Installation and Downloads
The best way to get shconfparser is with setuptools or pip. If you already have setuptools, you can install as usual:
python -m pip install shconfparser
Otherwise download it from PyPi, extract it and run the setup.py
script
python setup.py install
If you’re Interested in the source, you can always pull from the github repo:
- From github
git clone https://github.com/kirankotari/shconfparser.git
FAQ
-
| Question: I want to use shconfparser with Python3, is that safe? | Answer: As long as you’re using python 3.3 or higher, it’s safe. I tested every release against python 3.1+, however python 3.1 and 3.2 not running in continuous integration test.
-
| Question: I want to use shconfparser with Python2, is that safe? | Answer: As long as you’re using python 2.7 or higher, it’s safe. I tested against python 2.7.
Other Resources
Python3 documentation <https://docs.python.org/3/>
__ is a good way to learn python- Python
GeeksforGeeks <https://www.geeksforgeeks.org/python-programming-language/>
__ Ordered Dictionary <https://docs.python.org/2/library/collections.html#collections.OrderedDict>
__JSON <http://json.org/>
__
Bug Tracker and Support
- Please report any suggestions, bug reports, or annoyances with
shconfparser through the
Github bug tracker <https://github.com/kirankotari/shconfparser/issues>
. If you’re having problems with general python issues, consider searching for a solution onStack Overflow <https://stackoverflow.com/search?q=>
. - If you can’t find a solution for your problem or need more help, you
can
ask a question <https://stackoverflow.com/questions/ask>
__. - You can also ask on the
Stack Exchange Network Engineering <https://networkengineering.stackexchange.com/>
__ site.
Unit Tests
-
Travis CI <https://travis-ci.org/kirankotari/shconfparser/builds>
__ project tests shconfparser on Python versions2.7
through3.7
. -
| The current build status is: | |Build Status|
License and Copyright
- shconfparser is licensed
MIT <http://opensource.org/licenses/mit-license.php>
__ 2016-2018 |License: MIT|
Author and Thanks
shconfparser was developed by Kiran Kumar Kotari <https://github.com/kirankotari>
__
.. |Build Status| image:: https://travis-ci.org/kirankotari/shconfparser.svg?branch=master :target: https://travis-ci.org/kirankotari/shconfparser .. |GitHub issues open| image:: https://img.shields.io/github/issues/kirankotari/shconfparser.svg?maxAge=2592000 :target: https://github.com/kirankotari/shconfparser/issues .. |License: MIT| image:: https://img.shields.io/badge/License-MIT-yellow.svg :target: https://opensource.org/licenses/MIT .. |Coverage Status| image:: https://coveralls.io/repos/github/kirankotari/shconfparser/badge.svg?branch=master :target: https://coveralls.io/github/kirankotari/shconfparser?branch=master
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for shconfparser-1.1.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 43c6396b462ef2542f04b30978039f1547b48d6fc847a8f7a05970580c2946d1 |
|
MD5 | 4711ab1f9012b00971ebb43a5990c4e8 |
|
BLAKE2b-256 | aa85b149ad72a4e5d0a8e86348dd6c1744f985f287a0286246227b9aae25e70d |