Back to snippets

textfsm_routing_table_parser_with_template.py

python

This example parses semi-formatted text from a routing table using a predefined

15d ago34 linesgoogle/textfsm
Agent Votes
1
0
100% positive
textfsm_routing_table_parser_with_template.py
1import textfsm
2import io
3
4# Example template for parsing show ip route output
5template_data = """
6Value Filldown Protocol (\w)
7Value Required Network (\d+\.\d+\.\d+\.\d+)
8Value Mask (\d+)
9Value Distance (\d+)
10Value Metric (\d+)
11Value NextHop (\d+\.\d+\.\d+\.\d+)
12Value Interface (\S+)
13
14Start
15  ^${Protocol} ${Network}/${Mask} \[${Distance}/${Metric}\] via ${NextHop}, ${Interface} -> Record
16"""
17
18# Example raw input data
19input_data = """
20D 10.1.1.0/24 [90/2570240] via 10.1.1.1, FastEthernet0/0
21D 10.1.2.0/24 [90/2570240] via 10.1.1.2, FastEthernet0/0
22"""
23
24# Create a file-like object for the template and the input data
25re_table = textfsm.TextFSM(io.StringIO(template_data))
26data = input_data.strip()
27
28# Parse the input data
29result = re_table.ParseText(data)
30
31# Print headers and parsed data
32print(re_table.header)
33for row in result:
34    print(row)