eAPI Python script to look at ARP entries per VRF
I needed to see all the different ARP entries in each VRF, so I wrote up this little script to do just that. The ‘show vrf’ command in eAPI has not yet been converted to JSON, so I had to do some text parsing to get the VRF names, then use those names to grab the ARP entries. On line 4 you’ll see that I use the ‘text’ option for the output of the JSON reply. That allows me to run a command that hasn’t been converted yet and get the raw text output:
response = switch.runCmds( 1, ["show vrf"], "text" )
The output looks like this:
"output": " Vrf RD Protocols State Interfaces \n----------- ------------- --------------- ---------------- ---------- \n test 100:100 ipv4 no routing \n test2 101:101 ipv4 no routing \n test3 102:102 ipv4 no routing \n\n"
Or in a more familiar format:
Vrf RD Protocols State Interfaces ----------- ------------- --------------- ---------------- ---------- test 100:100 ipv4 no routing test2 101:101 ipv4 no routing test3 102:102 ipv4 no routing
Then I take the output and use
splitlines()
to take each line (separated by newline) and insert them into a list:lines = response[0]['output'].splitlines()
Now I iterate through each entry of the ‘show ip vrf’ output and issue a ‘show ip arp vrf’ with the VRF name. I use the
range()
function, starting at the 3rd line (since the first two are just header lines), and go through the end of the list. Then I use the split() method to split each line on whitespace, taking the first entry which corresponds to the VRF name. Finally, I can use that VRF name in my command.for i in range(2, len(lines) - 1): vrfname = lines[i].split()[0] command = "show ip arp vrf " + vrfname
Here’s the script in its entirety:
No comments:
Post a Comment