ifIndex = library.get(saved_data.community_string, ip.format(), 'IF-MIB', 'ifIndex') ifName = library.get(saved_data.community_string, ip.format(), 'IF-MIB', 'ifName') print("Interface index Loaded") # Initialize interface class print("Organizing data") interface_record = {} for i in range(len(ifIndex[0])): interface_record[ifIndex[0][i]] = library.Interface(ifIndex[0][i], ifName[0][i]) # Appends MAC addresses table to the interface class for i in range(len(cam_table[0])): mac = re.search(r'[0-9:a-fA-F]{17}', cam_table[1][i]).group() interface_record[cam_table[0][i]].mac_table.append(netaddr.EUI(mac)) library.send_command('flow-control', chan=chan, configure=True) interface_configs = running_config.find_objects(r'interface.*') # Searches for live mac address and configures based on spreadsheet print("Searching interfaces for devices") for interface in sorted(interface_record): for mac in interface_record[interface].mac_table: for search in oui_discovery.items(): try: if mac.oui in search[1]: if interface_record[interface].flag is 'switch': continue interface_record[interface].flag = search[0].lower() print("Interface {0}: MAC {1}: Flag: {2}".format( interface_record[interface].ifName, str(mac), interface_record[interface].flag)
reader = csv.DictReader(f) for row in reader: if 'x' in row.values(): iface['/1/'.join(row['D Port'].split('/'))].append(row.keys()[row.values().index('x')]) port_assignments[row['Switch IP']].update(iface) for ip in saved_data.iplist: # Opens SSH connection print("Opening SSH connection to {0}".format(ip.format())) chan, ssh = library.login(ip.format(), saved_data.username, saved_data.psk) if len(saved_data.tftp) > 3: # Updates Boot Rom and waits for startup print("Loading boot loader") library.send_command('copy tftp flash {0} 08030d/ICX7450/Boot/spz10105.bin boot'.format(saved_data.tftp), chan=chan) # Visual timer to wait for boot rom to finish loading for t in range(30, -1, -5): minutes = t / 60 seconds = t % 60 print "%d:%2d" % (minutes, seconds), time.sleep(5.0) print("Done") # Removes vlan 24 & 26 print("Removing vlan 24, 26, and 70") library.send_command('no vlan 24', 'no vlan 26', 'no vlan 70', configure=True, chan=chan) # Adds vlan 20 print("Adding vlan 20 and 70")