Aug-27-2019, 07:14 AM
Hi All,
below is the my code, however while I am checking List value in another file, post matching its printing twice.
below is the my code, however while I am checking List value in another file, post matching its printing twice.
from ciscoconfparse import CiscoConfParse from ciscoconfparse.ccp_util import IPv4Obj import netaddr import mysql.connector import re def dslam_ip_fromdb(): global mydb global dslamip_list dslamip_list = [] try: mydb = mysql.connector.connect(host="localhost", user="admin", passwd="nx63299", database="device") if mydb.is_connected(): mycursor = mydb.cursor() sql = "SELECT * FROM host_details WHERE access_group='TTML'" try: # Execute the SQL command mycursor.execute(sql) # Fetch all the rows in a list of lists. results = mycursor.fetchall() for row in results: ip_addr = row[6] dslamip_list.append(ip_addr) except: print("Error: unable to fecth data") except Error as e: print("Error reading data from MySQL table", e) finally: if (mydb.is_connected()): mydb.close() mycursor.close() print("MySQL connection is closed") with open('dslamips.txt') as ipdatafile: for sr_no, line in enumerate(ipdatafile, start=1): for ips in dslamip_list: if ips in line: print("{} {}".format(sr_no,line)) if __name__ == "__main__": interface_details = [] # the result dictionary result = { "interfaces": {} } global sub_interface sr_no = 0 conf_file = "E320.conf" confparse = CiscoConfParse(conf_file) global_obj = confparse.find_objects(r'^hostname')[0] sysname = global_obj.re_match_typed(r'^hostname\s+(\S+)', default='').strip('"') interface_cmds = confparse.find_objects(r"^interface ") for interface_cmd in interface_cmds: intf_name = interface_cmd.text[len("interface "):] result["interfaces"][intf_name] = {} result["interfaces"][intf_name]["svlan"] = "svlan_not_set" result["interfaces"][intf_name]["cvlan"] = "cvlan_not_set" for cmd in interface_cmd.re_search_children(r"^ svlan "): result["interfaces"][intf_name]["svlan"] = cmd.text.strip()[len(" svlan id"):].split(' ')[0] result["interfaces"][intf_name]["cvlan"] = cmd.text.strip()[len(" svlan id"):].split(' ')[1] result["interfaces"][intf_name]["status"] = "Active" for cmd in interface_cmd.re_search_children(r"^ shutdown"): result["interfaces"][intf_name]["status"] = "Shutdown" ip_static_routes_conf= confparse.find_blocks(r"^ip route ") with open('dslamips.txt','w') as routefile: for route in ip_static_routes_conf: if 'GigabitEthernet' in route: routefile.write(route+'\n') with open('svlan_cvlan.txt','w') as vlanfile: for interface in result["interfaces"].items(): if 'Shutdown' in interface[1].values() or 'lag' in interface[0]: continue if 'gigabitEthernet' in interface[0]: data = interface[0]+";",";".join(interface[1].values()) data_to_write = data[0] + data[1] vlanfile.write(data_to_write+"\n") else: continue #Function calling dslam_ip_fromdb()sample output
Output:ip=10.218.128.10 5757 ip route 10.218.128.101 255.255.255.255 GigabitEthernet1/0/2.2787218
ip=10.218.128.101 5757 ip route 10.218.128.101 255.255.255.255 GigabitEthernet1/0/2.2787218
ip=10.218.128.10 5758 ip route 10.218.128.102 255.255.255.255 GigabitEthernet1/0/2.102182718
ip=10.218.128.103 5759 ip route 10.218.128.103 255.255.255.255 GigabitEthernet1/0/2.102182297
ip=10.218.128.10 5759 ip route 10.218.128.103 255.255.255.255 GigabitEthernet1/0/2.102182297
ip=10.218.128.10 5760 ip route 10.218.128.104 255.255.255.255 GigabitEthernet1/0/2.102181899
ip=10.218.128.104 5760 ip route 10.218.128.104 255.255.255.255 GigabitEthernet1/0/2.102181899
ip=10.218.128.10 5761 ip route 10.218.128.105 255.255.255.255 GigabitEthernet1/0/2.102182703
ip=10.218.128.10 5762 ip route 10.218.128.106 255.255.255.255 GigabitEthernet1/0/2.102181815
ip=10.218.128.106 5762 ip route 10.218.128.106 255.255.255.255 GigabitEthernet1/0/2.102181815
ip=10.218.128.107 5763 ip route 10.218.128.107 255.255.255.255 GigabitEthernet1/0/2.10218403
ip=10.218.128.10 5763 ip route 10.218.128.107 255.255.255.255 GigabitEthernet1/0/2.10218403
ip=10.218.128.10 5764 ip route 10.218.128.108 255.255.255.255 GigabitEthernet1/0/2.102181815
ip=10.218.128.10 5765 ip route 10.218.128.109 255.255.255.255 GigabitEthernet1/0/2.102182704
ip=10.218.128.111 5767 ip route 10.218.128.111 255.255.255.255 GigabitEthernet1/0/2.102182232
ip=10.218.128.112 5768 ip route 10.218.128.112 255.255.255.255 GigabitEthernet1/0/2.102181899
ip=10.218.128.113 5769 ip route 10.218.128.113 255.255.255.255 GigabitEthernet1/0/2.102181816
ip=10.218.128.116 5771 ip route 10.218.128.116 255.255.255.255 GigabitEthernet1/0/2.102182297
ip=10.218.128.117 5772 ip route 10.218.128.117 255.255.255.255 GigabitEthernet1/0/2.102181899
ip=10.117.1.199 6151 ip route 110.117.1.199 255.255.255.255 GigabitEthernet2/0/5.1011704
ip=10.117.1.19 6151 ip route 110.117.1.199 255.255.255.255 GigabitEthernet2/0/5.1011704