Finding configuration lines on Cisco hardware with Python


I love simple automation and scripting.

In this example, we had to audit thousands of network devices for a specific configuration line. Doing this by hand would take hours, with Python it takes minutes. (Yes, we will automate the fix at some point).

Basic conditions and loops combined with a handful of network libraries and regular expression knowledge can go a long way to making a more productive day.

#!/usr/local/bin/python3

from netmiko import Netmiko
from getpass import getpass

password = getpass()

input = open('washu-3850-inventory.txt', 'r')

for i in input:
    output = []
    devices = i.split()

    if devices[0]:
        try:
            net_connect = Netmiko(host=devices[1], username="myusername", password=password, device_type="cisco_ios")
            net_connect.find_prompt()
        except:
            next

        output.append(net_connect.send_command("show run | inc frame", use_textfsm=True))

        if output[0]:
            print("Found on " + devices[0] + " " + output[0])
        else:
            print("Not found on " + devices[0])