Metadata-Version: 2.1
Name: shconfparser
Version: 1.1.4
Summary: It's a Network configuration parser, which translates the show outputs
Home-page: https://github.com/kirankotari/shconfparser
Author: Kiran Kumar Kotari
Author-email: kotarikirankumar@gmail.com
License: UNKNOWN
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 on `Stack
           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 versions ``2.7`` through
           ``3.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
        
Keywords: network conf parser translator cisco show output parser
Platform: UNKNOWN
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.1
Classifier: Programming Language :: Python :: 3.2
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Description-Content-Type: text/markdown
