This Package Will Parse Cisco IOS, IOS-XE, IOS-XR and NXOS Configuration File.
Project description
Cisco Configuration Parser
This Package Will Parse Cisco IOS, IOS-XE, IOS-XR, and NXOS Configuration File.
There are two ways to parse the config, 1, SSH which is not recommended, and 2, feeding the running-config file
- to use file, use
ConfigParser(method="file", content=<your_file>)
. - to use SSH:
ConfigParser(
method="int_ssh",
ssh=True,
user="username",
password="password",
device_type="cisco_ios",
host="your_switch_ip"
)
device types that are accepted are:
cisco_ios
cisco_xe
cisco_xr
cisco_nxos
pass the kwargs then it will login to your device and does the show running-config
and will parse it.
Install the package
https://pypi.org/project/cisco-config-parser/
pip install cisco-config-parser
Regex Search Strings:
- to find lines in the configuration starting with "router"
parse.find_parent_child("^router")
- to parse all confuguration into parent and child format
parse.find_parent_child("^.")
- to find lines in the configuration that has "Loopback" in them
parse.find_parent_child("^.*Loopback")
Examples:
- Parsing NXOS Config For All the Related VLAN Info.
- Note: if you want to parse NXOS config, you must specify the
platform="nxos"
, otherwise, the default value ofplatform
iscisco_ios
.
>>> nxos_parser = ConfigParser(method="file", content=file1, platform="nxos")
>>> vlan_info = nxos_parser.nxos_get_vlan_info()
>>> vlan_info.vlan = "2626"
>>> print(vlan_info.vlan)
:return:
!
vlan 2626
name GRN200_nonPROD_APP_01
vn-segment 2002626
!
interface Vlan2626
description grn200 nonPROD App Servers 01
no shutdown
mtu 9216
vrf member GRN200
no ip redirects
ip address 10.147.148.1/24
no ipv6 redirects
fabric forwarding mode anycast-gateway
!
int nve1
member vni 2002626
suppress-arp
ingress-replication protocol bgp
!
evpn
vni 2002626 l2
rd auto
route-target import auto
route-target export aut
- Getting Routed Ports
from cisco_config_parser import ConfigParser
my_file = "running-config.txt"
parser = ConfigParser(method="file", content=my_file)
obj = parser.get_routed_port()
for i in obj:
print(i.intf)
print(i.ip_add, i.mask)
print(i.subnet)
print(i.description)
print(i.vrf)
print(i.description)
print(i.state)
print("!")
output:
interface TenGigE0/3/0/29.3240
10.10.1.1 255.255.255.248
10.10.1.0/29
description Connected to device_A
vrf vrf_A
no shutdown
!
interface TenGigE0/3/0/29.3340
10.244.10.1 255.255.255.252
10.244.10.0/30
description Connected to device_A
vrf vrf_B
no shutdown
- Getting Switchport:
there are two different mode on switchport,
access
andtrunk
. you should specify the modemode=trunk
ormode=access
. this way you will be able to access all the access-ports or trunk-ports by accessing the methods (get_access or get_trunk)
from cisco_config_parser import ConfigParser
my_file = "switch01_run_config.txt"
parser = ConfigParser(method="file", content=my_file)
obj = parser.get_switchport(mode="access")
for i in obj:
print(i.port)
print(i.vlan)
print(i.voice)
print(i.description)
print("!")
for i in obj:
print(i.get_access)
output:
interface GigabitEthernet10/38
Access Port
Vlan 200
Voice vlan 700
description ent-user
!
interface GigabitEthernet10/38
Access Port
Vlan 200
Voice vlan 700
description ent-user
- Finding Routing Protocol
from cisco_config_parser import ConfigParser
my_file = "switch01_running_config.txt"
parse = ConfigParser(method="file", content=my_file)
obj_list = parse.find_parent_child("^router")
for i in obj_list:
print(i.parent)
for child_obj in i.child:
print(child_obj)
Output:
router eigrp 252
!
address-family ipv4 vrf vrf_A autonomous-system 252
network 10.10.10.0 0.0.0.63
passive-interface default
no passive-interface Vlan3123
no passive-interface Vlan3124
eigrp stub connected summary
exit-address-family
!
address-family ipv4 vrf vrf_B autonomous-system 252
network 10.20.10.0 0.0.0.3
network 10.20.11.0 0.0.0.3
passive-interface default
no passive-interface Vlan3223
no passive-interface Vlan3224
eigrp stub connected summary
exit-address-family
!
- Finding Interface and Helper address Example
from cisco_config_parser import ConfigParser
my_file = "switch01_running_config.txt"
parse = ConfigParser(method="file", content=my_file)
obj_list = parse.find_parent_child("^interface")
for i in obj_list:
vlan_200 = re.search("Vlan200", i.parent)
if vlan_200:
print(i.parent)
for c_obj in i.child:
if str(c_obj).startswith(" ip helper"):
print(str(c_obj))
Output:
interface Vlan200
ip helper-address 192.168.1.10
ip helper-address 172.31.10.10
- Finding SVI in the config with all its child configuration
from cisco_config_parser import ConfigParser
my_file = "switch_01-run_config.txt"
parser = ConfigParser(method="file", content=my_file)
res = parser.get_svi_objects()
for i in res:
if "lan200" in i.intf:
print(i.intf)
print(i.ip_add)
print(i.description)
print(i.vrf)
print(i.state)
print(i.helper)
print("!")
output:
interface Vlan200
ip address 10.20.80.1 255.255.254.0
description USER VLAN-
ip vrf forwarding vrf_A
no shutdown
[' ip helper-address 10.10.1.10 ', ' ip helper-address 10.20.1.10']
!
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
cisco_config_parser-1.3.0.tar.gz
(11.3 kB
view details)
Built Distribution
File details
Details for the file cisco_config_parser-1.3.0.tar.gz
.
File metadata
- Download URL: cisco_config_parser-1.3.0.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 95b2b19364ff4cbe6513299fe0b0717ed077918135ec07126bf655a0840d2bc0 |
|
MD5 | a599ca573fedf908a0c4c10f159cd59b |
|
BLAKE2b-256 | 634666da02493e852624cb9ff6150185e4cec59fe9a700f947923548c28d0a0a |
File details
Details for the file cisco_config_parser-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: cisco_config_parser-1.3.0-py3-none-any.whl
- Upload date:
- Size: 11.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d9f8f5f2477c8b281dff57a2159a40062a746ec48f7f75688d4ba985ff0319e7 |
|
MD5 | 8a1213a3f826b1204891f8848df522ea |
|
BLAKE2b-256 | 7f992d90438e27867892a2d70eb700e5ae074bfdd25fd11f3caca49398855f8b |