Пример #1
0
def import_storage(ips):
    storage_dict = mult_ssh2_storage(ips)
    for i in storage_dict:
        storage_fact.append(i['storage_fact'])
        storage_lun_fact.append(i['storage_lun_fact'])
    import_time = datetime.datetime.now()
    logger.info("Storage数据开始比较!")
    try:
        update_storage_num = 0
        add_storage_num = 0
        for i in storage_fact:
            storage_temp = None
            for j in Storage_cmdb:
                if i[0]['Series_No'] and j['Series_No']:
                    while i[0]['Series_No'].upper() == j['Series_No'].upper():
                        storage_temp = i[0]['Series_No']
                        if cmp(i[0], j) != 0:
                            Storage_final.append({'Description': j['Description'],
                                                  # 'Firmware': i['Firmware'],
                                                  'DevName': i[0]['DevName'],
                                                  'Series_No': i[0]['Series_No'],
                                                  'Ctlr_Frequency': i[0]['Ctlr_Frequency'],
                                                  'MANUFACTURE_Factory': i[0]['MANUFACTURE_Factory'],
                                                  'CI_modelid': i[0]['CI_modelid'],
                                                  'IP': i[0]['IP']})
                            j['status'] = 'O'
                            Storage_excel.append(j)
                            i[0]['status'] = 'A'
                            Storage_excel.append(i[0])
                            update_storage_num += 1
                        break

            if storage_temp is None:
                Storage_final.append(i[0])
                i[0]['status'] = 'A'
                Storage_excel.append(i[0])
                add_storage_num += 1

        logger.info("Storage数据比较结束!修改%d条,新增%d条", update_storage_num, add_storage_num)

        if update_flag:
            if update_storage_num != 0 or add_storage_num != 0:
                storage_dict = {"Storage": Storage_final}
                update_result = cmdbuild_api.put_update(token, json.dumps(storage_dict))
                cost_os_time = cost(import_time)
                logger.info("导入数据成功! 耗时%d秒", cost_os_time)
                logger.info("cmdbuild返回结果:" + update_result)
            else:
                cost_os_time = cost(import_time)
                logger.info("两边数据一致! 耗时%d秒", cost_os_time)

        if excel_flag:
            if Storage_excel:
                excel(Storage_excel, 'Storage')

    except Exception, e:
        logger.error("Storage数据比较失败,报错内容:%s", e)
Пример #2
0
def import_TProcess(TProcessList, TProcess_cmdb_list):
    TProcess_final = []
    TProcess_final_excel = []
    update_TProcess_num = 0
    add_TProcess_num = 0
    logger.info("本币进程数据开始比较!")
    import_time = datetime.datetime.now()
    try:
        for i in TProcessList:
            if i['PRTYPE'] != '12':
                import_temp = None
                for j in TProcess_cmdb_list:
                    if i['DisplayName'].strip().upper() == j['DisplayName'].strip().upper():  # 去掉CMDB中进程名的回车、空格等
                        import_temp = j['Description']
                        if i['DisplayName'] != j['DisplayName']:
                            TProcess_final.append({'Description': j['Description'],
                                                   'DisplayName': i['DisplayName']})
                            if excel_flag:
                                TProcess_final_excel.append({'Description': j['Description'],
                                                             'DisplayName': j['DisplayName'],
                                                             'PRTYPE': i['PRTYPE'],
                                                             'Status': 'O'})
                                TProcess_final_excel.append({'Description': j['Description'],
                                                             'DisplayName': i['DisplayName'],
                                                             'PRTYPE': i['PRTYPE'],
                                                             'Status': 'U'})
                            update_TProcess_num += 1
                            break

                if import_temp is None:
                    add_TProcess_num += 1
                    TProcess_final.append({'Description': i['Description'],
                                           'DisplayName': i['DisplayName']})
                    if excel_flag:
                        TProcess_final_excel.append({'Description': i['Description'],
                                                     'DisplayName': i['DisplayName'],
                                                     'PRTYPE': i['PRTYPE'],
                                                     'Status': 'A'})
        logger.info("需要更新%d条,新增%d条!", update_TProcess_num, add_TProcess_num)

        if excel_flag:
            excel(TProcess_final_excel, 'TProcess_final')
        if update_flag:
            if update_TProcess_num != 0 or add_TProcess_num != 0:
                TProcess_dict = {"RuntimeProcess": TProcess_final}
                update_result = cmdbuild_api.put_update(token, json.dumps(TProcess_dict))
                cost_time = cost(import_time)
                logger.info("更新数据成功! 耗时%d秒", cost_time)
                logger.info("cmdbuild平台更新返回结果:%s", update_result)
            else:
                cost_time = cost(import_time)
                logger.info("两边数据一致,无需更新! 耗时%d秒", cost_time)
    except Exception, e:
        logger.info("更新数据失败!原因:%s", e)
Пример #3
0
def get_cmdbuild_firberswitch_port():
    get_cmdbuild_time = datetime.datetime.now()
    logger.info("cmdbuild平台FC_Switch_Port数据开始采集!")
    try:
        firberswitch_port_cmdb_num = 0
        fc_switch_port = cmdbuild_api.get_class(token, 'FC_Switch_Port', cards=True)
        for i in json.loads(fc_switch_port)['data']:
            for k, v in i.items():
                if i[k] is None:
                    i[k] = u''

            firberswitch_port_cmdb.append({'Description': i['Description'],
                                           'FCSwitch_Name': i['FCSwitch_Name'],
                                           'Slot': i['Slot'],
                                           'Port': i['Port'],
                                           'Domain_Index': i['Domain_Index'],
                                           'Speed': i['Speed'],
                                           'FC_Switch_Port_State': i['FC_Switch_Port_State'],
                                           # 'Host_HBA': i['Host_HBA'],
                                           'Host_HBA_WWPN': i['Host_HBA_WWPN']})
            firberswitch_port_cmdb_num += 1

        cost_time = cost(get_cmdbuild_time)
        logger.info("在cmdbuild系统上找到%d条FC_Switch_Port数据", firberswitch_port_cmdb_num)
        logger.info("cmdbuild平台FC_Switch_Port数据采集成功! 耗时%d秒", cost_time)
        return firberswitch_port_cmdb_num
    except Exception, e:
        logger.error("cmdbuild平台FC_Switch_Port数据采集失败! 原因:%s", e)
Пример #4
0
def get_cmdbuild_process_ip(TProcess_cmdb_list):
    process_ip_cmdb = {}
    process_ip_cmdb_num = 0
    logger.info("cmdbuild本币进程与ip关系数据开始采集!")
    get_cmdbuild_time = datetime.datetime.now()
    try:
        process_ip_relation = json.loads(cmdbuild_api.get_domain(token, 'Process_RunsOn_IP'))['data']
        for i in process_ip_relation:
            for k, v in i.items():
                if k == '_destinationDescription':
                    Description = i[k]
                    for j in TProcess_cmdb_list:
                        if Description == j['Description']:
                            DisplayName = j['DisplayName']
                            break
                if k == '_sourceDescription':
                    ip = i[k]
            try:
                process_ip_cmdb[Description]
            except KeyError:
                process_ip_cmdb[Description] = {}
                process_ip_cmdb[Description]['Description'] = Description
                process_ip_cmdb[Description]['DisplayName'] = DisplayName
                process_ip_cmdb[Description]['ips'] = []
            process_ip_cmdb[Description]['ips'].append(ip)
            process_ip_cmdb_num += 1
        cost_time = cost(get_cmdbuild_time)
        logger.info("cmdbuild本币进程和ip关系采集成功! 共%d条,耗时%d秒", process_ip_cmdb_num, cost_time)
    except Exception, e:
        logger.error("cmdbuild平台本币进程和ip关系采集失败! 原因:%s", e)
Пример #5
0
def get_cmdb_netdevice_interface():
    get_cmdbuild_time = datetime.datetime.now()
    logger.info("cmdbuild网络接口数据开始采集!")
    netdevice_interface_cmdb_num = 0
    try:
        # 通过cmdbuild接口数据采集数据
        # 'Description', 'Switch_Name', 'Port', 'Vlan', 'IP_Addr'
        switch_ports_netdevice = cmdbuild_api.get_class(token, 'Switch_Ports', cards=True)
        if switch_ports_netdevice:
            for i in json.loads(switch_ports_netdevice)['data']:
                netdevice_interface_cmdb_info = {'Description': i['Description'],
                                                 'Switch_Name': i['Switch_Name'],
                                                 'Port': i['Port']}
                if i['Vlan'] is None:
                    netdevice_interface_cmdb_info['Vlan'] = ''
                else:
                    netdevice_interface_cmdb_info['Vlan'] = i['Vlan']
                if i['Use_Status'] is None:
                    netdevice_interface_cmdb_info['Use_Status'] = ''
                else:
                    netdevice_interface_cmdb_info['Use_Status'] = i['Use_Status']
                netdevice_interface_cmdb.append(netdevice_interface_cmdb_info)
                netdevice_interface_cmdb_num += 1

        # print netdevice_interface_cmdb
        excel(netdevice_interface_cmdb, 'netdevice_interface_cmdb')

        cost_cmdbuild_time = cost(get_cmdbuild_time)
        logger.info("cmdbuild网络接口数据采集成功! 采集%d条数据,耗时%d秒" % (netdevice_interface_cmdb_num, cost_cmdbuild_time))
    except Exception, e:
        logger.error("cmdbuild网络接口数据采集失败! 原因:%s", e)
Пример #6
0
def get_cmdbuild_firberswitch():
    get_cmdbuild_time = datetime.datetime.now()
    logger.info("cmdbuild平台FC_Switch数据开始采集!")
    try:
        firberswitch_cmdb_num = 0
        fc_switch = cmdbuild_api.get_class(token, 'FC_Switch', cards=True)
        for i in json.loads(fc_switch)['data']:
            for k, v in i.items():
                if i[k] is None:
                    i[k] = u''
            # 存储设备-光纤交换机
            if i['AppType'] == u'\u5149\u7ea4\u4ea4\u6362\u673a':
                firberswitch_cmdb.append({'Description': i['Description'],
                                          'WWNN': i['WWNN'],
                                          # 'AppType': i['AppType'],
                                          'DevName': i['DevName'],
                                          'Series_No': i['Series_No'],
                                          'Total_Ports': i['Total_Ports'],
                                          'Ports_Enabled': i['Ports_Enabled'],
                                          'Ports_Used': i['Ports_Used'],
                                          'Speed_Support': i['Speed_Support'],
                                          # 'MANUFACTURE_Factory': i['MANUFACTURE_Factory'],
                                          # 'Speed_Support': i['Speed_Support'],
                                          # 'CI_modelid': i['CI_modelid'],
                                          'Fabric_OS': i['Fabric_OS'],
                                          'IP': i['IP']})
                firberswitch_cmdb_num += 1

        cost_time = cost(get_cmdbuild_time)
        logger.info("在cmdbuild系统上找到%d条FirberSwitch数据", firberswitch_cmdb_num)
        logger.info("cmdbuild平台FC_Switch数据采集成功! 耗时%d秒", cost_time)
        return firberswitch_cmdb_num
    except Exception, e:
        logger.error("cmdbuild平台FC_Switch数据采集失败! 原因:%s", e)
Пример #7
0
def get_cmdbuild_storage():
    get_cmdbuild_time = datetime.datetime.now()
    logger.info("cmdbuild平台Storage数据开始采集!")
    try:
        storage_cmdb_num = 0
        Storage = cmdbuild_api.get_class(token, 'Storage', cards=True)

        for i in json.loads(Storage)['data']:
            for k, v in i.items():
                if i[k] is None:
                    i[k] = u''
            Storage_cmdb.append({'Description': i['Description'],
                                 # 'Firmware': i['Firmware'],
                                 'DevName': i['DevName'],
                                 'Series_No': i['Series_No'],
                                 'Ctlr_Frequency': i['Ctlr_Frequency'],
                                 'MANUFACTURE_Factory': i['MANUFACTURE_Factory'],
                                 'CI_modelid': i['CI_modelid'],
                                 'IP': i['IP']})
            storage_cmdb_num += 1

        cost_time = cost(get_cmdbuild_time)
        logger.info("在cmdbuild系统上找到%d条storage数据", storage_cmdb_num)
        logger.info("cmdbuild平台Storage数据采集成功! 耗时%d秒", cost_time)
        return storage_cmdb_num
    except Exception, e:
        logger.error("cmdbuild平台Storage数据采集失败! 原因:%s", e)
Пример #8
0
def compare_lastpasswd():
    import_time = datetime.datetime.now()
    logger.info("Host和OS关系数据开始比较!")
    try:
        update_lastpasswd_num = 0
        add_lastpasswd_num = 0
        if lastpasswd_cmdb:
            for k in lastpasswd_fact:
                if k:
                    lastpasswd_temp = None
                    for i in k:
                        for j in lastpasswd_cmdb:
                            if i and j:
                                while i['Description'] == j['Description']:
                                    lastpasswd_temp = i['Description']
                                    if cmp(i, j) != 0:
                                        lastpasswd_final.append(i)
                                        update_lastpasswd_num += 1
                                    break

                        if lastpasswd_temp is None:
                            lastpasswd_final.append(i)
                            add_lastpasswd_num += 1
        else:
            for k in lastpasswd_fact:
                if k:
                    for i in k:
                        lastpasswd_final.append(i)
                        add_lastpasswd_num += 1

        logger.info("Host和OS关系数据比较结束!修改%d条数据,新增%d条数据" % (update_lastpasswd_num, add_lastpasswd_num))

        if update_lastpasswd_num != 0 or add_lastpasswd_num != 0:
            lastpasswd_final_dict = {'LastPasswd': lastpasswd_final}
            print lastpasswd_final_dict
            if update_flag:
                result = cmdbuild_api.put_update(token, json.dumps(lastpasswd_final_dict))
                logger.info("cmdbuild返回结果:" + result)
                cost_os_time = cost(import_time)
                logger.info("导入数据成功! 耗时%d秒", cost_os_time)
            # if excel_flag:
            #     excel(lastpasswd_final_dict,lastpasswd_final)
        else:
            cost_os_time = cost(import_time)
            logger.info("两边数据一致! 耗时%d秒", cost_os_time)
    except Exception, e:
        logger.error("Host和OS关系数据比较失败,报错内容:%s", e)
Пример #9
0
def import_process_ip(process_ip_list, process_ip_cmdb_list):
    process_ip_final = []
    process_ip_final_excel = []
    update_process_ip_num = 0
    add_process_ip_num = 0
    logger.info("进程和IP关系数据开始更新!")
    import_time = datetime.datetime.now()
    try:
        for i in process_ip_list:
            import_temp = None
            for j in process_ip_cmdb_list:
                if i['DisplayName'].strip().upper() == j['DisplayName'].strip('*').upper():  # 去掉CMDB中进程名的回车、空格等
                    import_temp = i['DisplayName']
                    if i['IP'] not in j['ips']:
                        process_ip_final.append({'进程': j['Description'],
                                                 'IP地址': i['IP']})
                        if excel_flag:
                            process_ip_final_excel.append({'进程': j['Description'],
                                                           'IP地址': i['IP'],
                                                           'Status': 'U'})
                        update_process_ip_num += 1
                    break
            if import_temp is None:
                process_ip_final.append({'进程': i['Description'],
                                         'IP地址': i['IP']})
                if excel_flag:
                    process_ip_final_excel.append({'进程': i['Description'],
                                                   'IP地址': i['IP'],
                                                   'Status': 'A'})
                add_process_ip_num += 1
        logger.info("需要更新%d条,新增%d条!", update_process_ip_num, add_process_ip_num)

        if excel_flag:
            excel(process_ip_final_excel, 'process_ip_final')
        if update_flag:
            if add_process_ip_num != 0:
                process_ip_dict = {"Process_RunsOn_IP": process_ip_final}
                update_result = cmdbuild_api.post_relation(token, json.dumps(process_ip_dict))
                cost_os_time = cost(import_time)
                logger.info("更新数据成功! 耗时%d秒", cost_os_time)
                logger.info("cmdbuild返回结果:" + update_result)
            else:
                cost_os_time = cost(import_time)
                logger.info("两边数据一致,无需更新! 耗时%d秒", cost_os_time)
    except Exception, e:
        logger.info("更新数据失败!原因:%s", e)
Пример #10
0
def get_h3c_netdevice():
    get_h3c_time = datetime.datetime.now()
    logger.info("H3C平台网络设备数据开始采集!")
    try:
        device = json.loads(h3c_api.page(device_url))
        netasset = json.loads(h3c_api.page(netasset_url))
        for i in device['device']:
            for j in netasset['netAsset']:
                while i['symbolName'] == j['deviceName']:
                    devicedetail_url = '/imcrs/plat/res/device/' + i['id'] + ''
                    devicedetail = json.loads(h3c_api.page(devicedetail_url))
                    # 48x1GE, 4x10GE 属于板卡,非交换机
                    if not j['model'].__contains__('Fabric Extender Module: 48x1GE, 4x10GE'):
                        netdevice_h3c_info = {'Description': i['symbolName'] + '-' + j['serialNum'],
                                              'DevName': i['symbolName'],
                                              'Manage_IP_Addr': i['ip'],
                                              'Series_No': j['serialNum'],
                                              # 'CI_modelid': ' '.join(devicedetail['typeName'].split()[1:]),
                                              'MANUFACTURE_Factory': transform(
                                                  str(devicedetail['typeName'].split()[0])),
                                              'OS_Bin': devicedetail['version']}
                        # 当网络资产中有型号信息,对网络信息进行处理获取信息,如果缺失,采用设备信息
                        if j['model']:
                            if j['model'].rstrip().__contains__(' '):
                                # 型号中包含Series关键字,则到devicedetail中获取
                                if not j['model'].__contains__('Series'):
                                    netdevice_h3c_info['CI_modelid'] = ' '.join(j['model'].split()[1:])
                                else:
                                    netdevice_h3c_info['CI_modelid'] = ' '.join(devicedetail['typeName'].split()[1:])
                            else:
                                netdevice_h3c_info['CI_modelid'] = j['model']
                        else:
                            netdevice_h3c_info['CI_modelid'] = ' '.join(devicedetail['typeName'].split()[1:])
                        # 当系统版本不存在时,从系统描述中获取OS_Version
                        if j['softVersion']:
                            netdevice_h3c_info['OS_Version'] = j['softVersion']
                        else:
                            if devicedetail['sysDescription'].__contains__('Version'):
                                for k in devicedetail['sysDescription'].split(','):
                                    if k.__contains__('Version') and not k.__contains__('Inc. Device Manager'):
                                        netdevice_h3c_info['OS_Version'] = k.split('Version ')[-1].strip()

                        netdevice_h3c.append(netdevice_h3c_info)
                    break
        get_h3c_time = cost(get_h3c_time)
        logger.info("H3C平台网络设备数据采集成功! 耗时%d秒", get_h3c_time)
    except Exception, e:
        logger.error("H3C平台网络设备数据采集失败! 原因:%s", e)
Пример #11
0
def get_cmdbuild_TProcess():
    TProcess_cmdb_list = []
    TProcess_cmdb_num = 0
    logger.info("cmdbuild本币进程数据开始采集!")
    get_cmdbuild_time = datetime.datetime.now()
    try:
        TProcess = cmdbuild_api.get_class(token, 'RuntimeProcess', cards=True)
        for i in json.loads(TProcess)['data']:
            for k, v in i.items():
                if i[k] is None:
                    i[k] = u''
            TProcess_cmdb_list.append({'Description': i['Description'],
                                       'DisplayName': i['DisplayName']})
            TProcess_cmdb_num += 1
        cost_time = cost(get_cmdbuild_time)
        logger.info("cmdbuild本币进程数据采集成功! 共%d条,耗时%d秒", TProcess_cmdb_num, cost_time)
    except Exception, e:
        logger.error("cmdbuild本币进程数据采集失败! 原因:%s", e)
Пример #12
0
def get_cmdbuild_lastpasswd():
    get_cmdbuild_time = datetime.datetime.now()
    logger.info("cmdbuild平台网络设备数据开始采集!")
    try:
        LastPasswd = cmdbuild_api.get_class(token, 'LastPasswd', cards=True)
        for i in json.loads(LastPasswd)['data']:
            for k, v in i.items():
                if i[k] is None:
                    i[k] = u''
            lastpasswd_cmdb_info = {
                'Description': i['Description'],
                'HostName': i['HostName'],
                'IP': i['IP'],
                'UserName': i['UserName'],
                'UpdateTime': i['UpdateTime'],
                'Expired': i['Expired']
            }
            lastpasswd_cmdb.append(lastpasswd_cmdb_info)
        cost_time = cost(get_cmdbuild_time)
        logger.info("lastpasswd数据采集成功! 耗时%d秒", cost_time)
    except Exception, e:
        logger.error("lastpasswd数据采集失败! 原因:%s", e)
Пример #13
0
def get_cmdbuild_netdevice():
    get_cmdbuild_time = datetime.datetime.now()
    logger.info("cmdbuild平台网络设备数据开始采集!")
    try:
        NetDevice = cmdbuild_api.get_class(token, 'NetDevice', cards=True)
        for i in json.loads(NetDevice)['data']:
            for k, v in i.items():
                if i[k] is None:
                    i[k] = u''
            netdevice_cmdb_info = {'Description': i['Description'],
                                   'DevName': i['DevName'],
                                   'Manage_IP_Addr': i['Manage_IP_Addr'],
                                   'Series_No': i['Series_No'],
                                   'CI_modelid': i['CI_modelid'],
                                   'MANUFACTURE_Factory': i['MANUFACTURE_Factory'],
                                   'OS_Version': i['OS_Version'],
                                   'OS_Bin': i['OS_Bin']}
            netdevice_cmdb.append(netdevice_cmdb_info)

        cost_time = cost(get_cmdbuild_time)
        logger.info("cmdbuild平台网络设备数据采集成功! 耗时%d秒", cost_time)
    except Exception, e:
        logger.error("cmdbuild平台网络设备数据采集失败! 原因:%s", e)
Пример #14
0
def get_cmdbuild_storage_lun():
    get_cmdbuild_time = datetime.datetime.now()
    logger.info("cmdbuild平台lunmapping数据开始采集!")
    try:
        storage_lun_cmdb_num = 0
        Storage = cmdbuild_api.get_class(token, 'Storage_Lun_Mapping', cards=True)

        for i in json.loads(Storage)['data']:
            for k, v in i.items():
                if i[k] is None:
                    i[k] = u''
            Storage_lun_cmdb.append({'Description': i['Description'],
                                     'LUN_Name': i['LUN_Name'],
                                     'Lun_Size': i['Lun_Size'],
                                     'Storage_Name': i['Storage_Name']})
            storage_lun_cmdb_num += 1

        cost_time = cost(get_cmdbuild_time)
        logger.info("在cmdbuild系统上找到%d条lunmapping数据", storage_lun_cmdb_num)
        logger.info("cmdbuild平台lunmapping数据采集成功! 耗时%d秒", cost_time)
        return storage_lun_cmdb_num
    except Exception, e:
        logger.error("cmdbuild平台lunmapping数据采集失败! 原因:%s", e)
Пример #15
0
                if storage_lun_temp is None:
                    Storage_lun_final.append(i[k])
                    i[k]['status'] = 'A'
                    Storage_lun_excel.append(i[k])
                    add_storage_lun_num += 1

        logger.info("Storage_Lun_Mapping数据比较结束!修改%d条,新增%d条",
                    update_storage_lun_num, add_storage_lun_num)

        if update_flag:
            if update_storage_lun_num != 0 or add_storage_lun_num != 0:
                storage_lun_dict = {"Storage_Lun_Mapping": Storage_lun_final}
                # print storage_lun_dict
                update_result = cmdbuild_api.put_update(
                    token, json.dumps(storage_lun_dict))
                cost_os_time = cost(import_time)
                logger.info("导入数据成功! 耗时%d秒", cost_os_time)
                logger.info("cmdbuild返回结果:" + update_result)
            else:
                cost_os_time = cost(import_time)
                logger.info("两边数据一致! 耗时%d秒", cost_os_time)
        if excel_flag:
            if Storage_lun_excel:
                excel(Storage_lun_excel, 'Storage_lun')

    except Exception, e:
        logger.error("Storage_Lun_Mapping数据比较失败,报错内容:%s", e)


if __name__ == '__main__':
    token = cmdbuild_api.get_token()
Пример #16
0
def import_firberswitch(ips):
    firberswitch_dict = mult_ssh2_fiberswitch(ips)
    for i in firberswitch_dict:
        firberswitch_fact.append(i['firberswitch_fact'])
        firberswitch_port_fact.append(i['firberswitch_port_fact'])
    try:
        import_time = datetime.datetime.now()
        logger.info("FirberSwitch数据开始比较!")
        update_firberswitch_num = 0
        add_firberswitch_num = 0
        # print firberswitch_fact
        for i in firberswitch_fact:
            firberswitch_temp = None
            for j in firberswitch_cmdb:
                if i['Series_No'] and j['Series_No']:
                    while i['Series_No'].upper() == j['Series_No'].upper():
                        firberswitch_temp = i['Series_No']
                        if cmp(i, j) != 0:
                            firberswitch_final.append({'Description': i['Description'],
                                                       'WWNN': i['WWNN'],
                                                       # 'AppType': i['AppType'],
                                                       'DevName': i['DevName'],
                                                       'Series_No': i['Series_No'],
                                                       'Total_Ports': i['Total_Ports'],
                                                       'Ports_Enabled': i['Ports_Enabled'],
                                                       'Ports_Used': i['Ports_Used'],
                                                       'Speed_Support': i['Speed_Support'],
                                                       # 'MANUFACTURE_Factory': i['MANUFACTURE_Factory'],
                                                       # 'Speed_Support': i['Speed_Support'],
                                                       # 'CI_modelid': i['CI_modelid'],
                                                       'Fabric_OS': i['Fabric_OS'],
                                                       'IP': i['IP']})
                            j['status'] = 'O'
                            firberswitch_excel.append(j)
                            i['status'] = 'U'
                            firberswitch_excel.append(i)
                            update_firberswitch_num += 1
                        break

            if firberswitch_temp is None:
                firberswitch_final.append(i)
                i['status'] = 'A'
                firberswitch_excel.append(i)
                add_firberswitch_num += 1

        logger.info("FirberSwitch数据比较结束!修改%d条,新增%d条", update_firberswitch_num, add_firberswitch_num)

        if update_flag:
            if update_firberswitch_num != 0 or add_firberswitch_num != 0:
                firberswitch_dict = {"FC_Switch": firberswitch_final}
                update_result = cmdbuild_api.put_update(token, json.dumps(firberswitch_dict))
                cost_os_time = cost(import_time)
                logger.info("导入数据成功! 耗时%d秒", cost_os_time)
                logger.info("cmdbuild返回结果:" + update_result)
            else:
                cost_os_time = cost(import_time)
                logger.info("两边数据一致! 耗时%d秒", cost_os_time)

        if excel_flag:
            if firberswitch_excel:
                excel(firberswitch_excel, 'FC_Switch')

    except Exception, e:
        logger.error("FirberSwitch数据比较失败,报错内容:%s", e)
Пример #17
0
                                update_firberswitch_port_num += 1
                            break

                if firberswitch_port_temp is None:
                    firberswitch_port_final.append(i[k])
                    i[k]['status'] = 'A'
                    firberswitch_port_excel.append(i[k])
                    add_firberswitch_port_num += 1

        logger.info("FirberSwitch_Port数据比较结束!修改%d条,新增%d条", update_firberswitch_port_num, add_firberswitch_port_num)

        if update_flag:
            if update_firberswitch_port_num != 0 or add_firberswitch_port_num != 0:
                firberswitch_port_dict = {"FC_Switch_Port": firberswitch_port_final}
                update_result = cmdbuild_api.put_update(token, json.dumps(firberswitch_port_dict))
                cost_os_time = cost(import_time)
                logger.info("导入数据成功! 耗时%d秒", cost_os_time)
                logger.info("cmdbuild返回结果:" + update_result)
            else:
                cost_os_time = cost(import_time)
                logger.info("两边数据一致! 耗时%d秒", cost_os_time)

        if excel_flag:
            if firberswitch_port_excel:
                excel(firberswitch_port_excel, 'FC_Switch_Port')

    except Exception, e:
        logger.error("FirberSwitch_Port数据比较失败,报错内容:%s", e)


if __name__ == '__main__':
Пример #18
0
def get_h3c_netdevice_interface():
    get_h3c_time = datetime.datetime.now()
    logger.info("H3C平台网络接口数据开始采集!")
    try:
        netdevice_interface_h3c_num = 0
        for i in device['device']:
            # 循环获取接口、trunk、access信息
            interface_url = '/imcrs/plat/res/device/' + i[
                'id'] + '/interface?size=1000'
            trunk_url = '/imcrs/vlan/trunk?devId=' + i['id'] + '&size=1000'
            access_url = '/imcrs/vlan/access?devId=' + i['id'] + '&size=1000'
            interface = json.loads(h3c_api.page(interface_url))
            trunk = json.loads(h3c_api.page(trunk_url))
            access = json.loads(h3c_api.page(access_url))

            # 判断接口与trunk、access口的ifIndex是否相同,添加Vlan信息
            # 输出主机名、端口号、vlan、对端ip、主机名+序列号、mac地址、状态
            if interface != {}:
                for x in interface['interface']:
                    if trunk:
                        interface1 = None
                        if str(trunk['trunkIf']).count('ifIndex') > 1:
                            for y in trunk['trunkIf']:
                                while y['ifIndex'] == x['ifIndex']:
                                    for k in netasset['netAsset']:
                                        while i['symbolName'] == k[
                                                'deviceName']:
                                            if x['ifDescription'].count(
                                                    '/') > 1:
                                                r = x['ifDescription'].replace(
                                                    '-', ''
                                                ).split('/')[0].strip(
                                                    filter(
                                                        str.isalpha,
                                                        str(x['ifDescription'])
                                                    ))
                                                if k['name'].isdigit():
                                                    s = k['name']
                                                else:
                                                    s = k['relPos']
                                                if r == s:
                                                    interface1 = i[
                                                        'symbolName']
                                                    interface_vlan.append({
                                                        'Description':
                                                        i['symbolName'] + '_' +
                                                        x['ifDescription'],
                                                        'Switch_Name':
                                                        i['symbolName'] + '-' +
                                                        k['serialNum'],
                                                        'Port':
                                                        x['ifDescription'],
                                                        'Vlan':
                                                        y['allowedVlans'],
                                                        'Use_Status':
                                                        x['statusDesc'],
                                                        'code':
                                                        '1'
                                                    })
                                            else:
                                                if not (k['desc'].__contains__(
                                                        'Nexus2248 Chassis'
                                                ) or k['desc'].__contains__(
                                                        'Nexus2348TP Chassis')
                                                        ):
                                                    interface1 = i[
                                                        'symbolName']
                                                    interface_vlan.append({
                                                        'Description':
                                                        i['symbolName'] + '_' +
                                                        x['ifDescription'],
                                                        'Switch_Name':
                                                        i['symbolName'] + '-' +
                                                        k['serialNum'],
                                                        'Port':
                                                        x['ifDescription'],
                                                        'Vlan':
                                                        y['allowedVlans'],
                                                        'Use_Status':
                                                        x['statusDesc'],
                                                        'code':
                                                        '2'
                                                    })
                                            break
                                    break
                        elif str(trunk['trunkIf']).count('ifIndex') == 1:
                            while y['ifIndex'] == x['ifIndex']:
                                for k in netasset['netAsset']:
                                    while i['symbolName'] == k['deviceName']:
                                        interface1 = i['symbolName']
                                        interface_vlan.append({
                                            'Description':
                                            i['symbolName'] + '_' +
                                            x['ifDescription'],
                                            'Switch_Name':
                                            i['symbolName'] + '-' +
                                            k['serialNum'],
                                            'Port':
                                            x['ifDescription'],
                                            'Vlan':
                                            y['allowedVlans'],
                                            'Use_Status':
                                            x['statusDesc'],
                                            'code':
                                            '3'
                                        })
                                        break
                                break

                    if access:
                        interface2 = None
                        if interface1 is None:
                            if str(access['accessIf']).count('ifIndex') > 1:
                                for z in access['accessIf']:
                                    while z['ifIndex'] == x['ifIndex']:
                                        for k in netasset['netAsset']:
                                            while i['symbolName'] == k[
                                                    'deviceName']:
                                                if x['ifDescription'].count(
                                                        '/') > 1:
                                                    r = x['ifDescription'].replace(
                                                        '-', ''
                                                    ).split('/')[0].strip(
                                                        filter(
                                                            str.isalpha,
                                                            str(x[
                                                                'ifDescription']
                                                                )))
                                                    if k['name'].isdigit():
                                                        s = k['name']
                                                    else:
                                                        s = k['relPos']
                                                    if int(r) < 100:
                                                        if r == s:
                                                            interface2 = i[
                                                                'symbolName']
                                                            interface_vlan.append({
                                                                'Description':
                                                                i['symbolName']
                                                                + '_' +
                                                                x['ifDescription'],
                                                                'Switch_Name':
                                                                i['symbolName']
                                                                + '-' +
                                                                k['serialNum'],
                                                                'Port':
                                                                x['ifDescription'],
                                                                'Vlan':
                                                                z['pvid'],
                                                                'Use_Status':
                                                                x['statusDesc'],
                                                                'code':
                                                                '4'
                                                            })
                                                    else:
                                                        interface2 = i[
                                                            'symbolName']
                                                        # 当relPos>100时,序列号为主机,端口号为FEX型
                                                        if int(k['relPos']
                                                               ) == 1:
                                                            interface_vlan.append({
                                                                'Description':
                                                                i['symbolName']
                                                                + '_' +
                                                                x['ifDescription'],
                                                                'Switch_Name':
                                                                i['symbolName']
                                                                + '-' +
                                                                k['serialNum'],
                                                                'Port':
                                                                x['ifDescription'],
                                                                'Vlan':
                                                                z['pvid'],
                                                                'Use_Status':
                                                                x['statusDesc'],
                                                                'code':
                                                                '5'
                                                            })
                                                else:
                                                    if not (k['desc'].__contains__(
                                                            'Nexus2248 Chassis'
                                                    ) or k['desc'].__contains__(
                                                            'Nexus2348TP Chassis'
                                                    )):
                                                        interface2 = i[
                                                            'symbolName']
                                                        interface_vlan.append({
                                                            'Description':
                                                            i['symbolName'] +
                                                            '_' +
                                                            x['ifDescription'],
                                                            'Switch_Name':
                                                            i['symbolName'] +
                                                            '-' +
                                                            k['serialNum'],
                                                            'Port':
                                                            x['ifDescription'],
                                                            'Vlan':
                                                            z['pvid'],
                                                            'Use_Status':
                                                            x['statusDesc'],
                                                            'code':
                                                            '6'
                                                        })
                                                break
                                        break
                            elif str(access['accessIf']).count('ifIndex') == 1:
                                while z['ifIndex'] == x['ifIndex']:
                                    for k in netasset['netAsset']:
                                        while i['symbolName'] == k[
                                                'deviceName']:
                                            interface2 = i['symbolName']
                                            interface_vlan.append({
                                                'Description':
                                                i['symbolName'] + '_' +
                                                x['ifDescription'],
                                                'Switch_Name':
                                                i['symbolName'] + '-' +
                                                k['serialNum'],
                                                'Port':
                                                x['ifDescription'],
                                                'Vlan':
                                                z['pvid'],
                                                'Use_Status':
                                                x['statusDesc'],
                                                'code':
                                                '7'
                                            })
                                            break
                                    break

                    if interface1 is None and interface2 is None:
                        for k in netasset['netAsset']:
                            if i['symbolName'] == k['deviceName']:
                                if x['ifDescription'].count('/') > 1:
                                    r = x['ifDescription'].replace(
                                        '-', '').split('/')[0].strip(
                                            filter(str.isalpha,
                                                   str(x['ifDescription'])))
                                    if k['name'].isdigit():
                                        s = k['name']
                                    else:
                                        s = k['relPos']
                                    if r == s:
                                        interface_vlan.append({
                                            'Description':
                                            i['symbolName'] + '_' +
                                            x['ifDescription'],
                                            'Switch_Name':
                                            i['symbolName'] + '-' +
                                            k['serialNum'],
                                            'Port':
                                            x['ifDescription'],
                                            'Vlan':
                                            '',
                                            'Use_Status':
                                            x['statusDesc'],
                                            'code':
                                            '8'
                                        })
                                    # todo:华为交换机 S5720-52X-PWR-SI-AC 单台有机柜号,目前规则不符合,此为定制
                                    elif k['name'].__contains__('S5720'):
                                        interface_vlan.append({
                                            'Description':
                                            i['symbolName'] + '_' +
                                            x['ifDescription'],
                                            'Switch_Name':
                                            i['symbolName'] + '-' +
                                            k['serialNum'],
                                            'Port':
                                            x['ifDescription'],
                                            'Vlan':
                                            '',
                                            'Use_Status':
                                            x['statusDesc'],
                                            'code':
                                            '9'
                                        })
                                else:
                                    # 不包含 Nexus2248 Chassis型号
                                    if not (k['name'].__contains__(
                                            'Nexus2248 Chassis')
                                            and k['name'].__contains__(
                                                'Nexus2348TP Chassis')):
                                        interface_vlan.append({
                                            'Description':
                                            i['symbolName'] + '_' +
                                            x['ifDescription'],
                                            'Switch_Name':
                                            i['symbolName'] + '-' +
                                            k['serialNum'],
                                            'Port':
                                            x['ifDescription'],
                                            'Vlan':
                                            '',
                                            'Use_Status':
                                            x['statusDesc'],
                                            'code':
                                            '10'
                                        })

        # 过滤非物理接口
        for i in interface_vlan:
            interface_port = i['Port'].lower()
            if interface_port.__contains__('ethernet') \
                    or interface_port.__contains__('fastethernet') \
                    or interface_port.__contains__('gigabitethernet') \
                    or interface_port.__contains__('flex'):
                netdevice_interface_h3c_info = {
                    'Description': i['Description'],
                    'Switch_Name': i['Switch_Name'],
                    'Port': i['Port'],
                    'Vlan': i['Vlan']
                }
                if i['Use_Status'] == u'Up':
                    netdevice_interface_h3c_info['Use_Status'] = u'已使用'
                else:
                    netdevice_interface_h3c_info['Use_Status'] = u'未使用'
                netdevice_interface_h3c.append(netdevice_interface_h3c_info)
                netdevice_interface_h3c_num += 1

        excel(netdevice_interface_h3c, 'netdevice_interface_h3c')
        cost_h3c_time = cost(get_h3c_time)
        logger.info("H3C平台网络接口数据采集成功! 采集%d条数据,耗时%d秒" %
                    (netdevice_interface_h3c_num, cost_h3c_time))
    except Exception, e:
        logger.error("H3C平台网络接口数据采集失败! 原因:%s", e)
Пример #19
0
def import_netdevice_interface():
    logger.info("网络接口数据开始比较!")
    try:
        update_netdevice_interface_num = 0
        add_netdevice_interface_num = 0
        if netdevice_interface_cmdb and netdevice_interface_h3c:
            for i in netdevice_interface_h3c:
                compare_temp = None
                for j in netdevice_interface_cmdb:
                    # 机器名和端口相同时
                    # ethernet、fastethernet、gigabitethernet输出值
                    if i['Switch_Name'] and j['Switch_Name']:
                        while i['Switch_Name'].upper(
                        ) == j['Switch_Name'].upper() and i['Port'] == restore(
                                str(j['Port'])):
                            compare_temp = i['Description']
                            if i['Port'] and i['Port'] != 'FastEthernet0' and i[
                                    'Port'] != 'FastEthernet1':
                                if cmp(i, j) != 0:
                                    netdevice_interface_final_info = {
                                        'Description': j['Description'],
                                        'Switch_Name': i['Switch_Name'],
                                        'Port': i['Port'],
                                        'Vlan': i['Vlan'],
                                        'Use_Status': i['Use_Status']
                                    }
                                    if j['Use_Status'] == u'待下线':
                                        netdevice_interface_final_info[
                                            'Use_Status'] = j['Use_Status']
                                        if cmp(netdevice_interface_final_info,
                                               j):
                                            netdevice_interface_final.append(
                                                netdevice_interface_final_info)
                                    else:
                                        netdevice_interface_final_info[
                                            'Use_Status'] = i['Use_Status']
                                        netdevice_interface_final.append(
                                            netdevice_interface_final_info)
                                    update_netdevice_interface_num += 1
                                    if excel_flag:
                                        netdevice_interface_final_info_old = {
                                            'Description': j['Description'],
                                            'Switch_Name': j['Switch_Name'],
                                            'Port': j['Port'],
                                            'Vlan': j['Vlan'],
                                            'Use_Status': j['Use_Status'],
                                            'status': 'O'
                                        }
                                        # print netdevice_interface_final_info_old
                                        netdevice_interface_final_info_update = {
                                            'Description': j['Description'],
                                            'Switch_Name': i['Switch_Name'],
                                            'Port': i['Port'],
                                            'Vlan': i['Vlan'],
                                            'status': 'U'
                                        }
                                        if j['Use_Status'] == u'待下线':
                                            netdevice_interface_final_info_update[
                                                'Use_Status'] = j['Use_Status']
                                            if cmp(
                                                    netdevice_interface_final_info,
                                                    j):
                                                netdevice_interface_final_excel.append(
                                                    netdevice_interface_final_info_old
                                                )
                                                netdevice_interface_final_excel.append(
                                                    netdevice_interface_final_info_update
                                                )
                                        else:
                                            netdevice_interface_final_info_update[
                                                'Use_Status'] = i['Use_Status']
                                            netdevice_interface_final_excel.append(
                                                netdevice_interface_final_info_old
                                            )
                                            netdevice_interface_final_excel.append(
                                                netdevice_interface_final_info_update
                                            )
                                        # print netdevice_interface_final_info_update

                            break

                # 如果无法匹配,新增数据
                # ethernet、fastethernet、gigabitethernet输出值
                if compare_temp is None:
                    if i['Port'] and i['Port'] != 'FastEthernet0' and i[
                            'Port'] != 'FastEthernet1':
                        netdevice_interface_final.append(i)
                        add_netdevice_interface_num += 1
                        if excel_flag:
                            netdevice_interface_final_info_add = {
                                'Description': i['Description'],
                                'Switch_Name': i['Switch_Name'],
                                'Port': i['Port'],
                                'Vlan': i['Vlan'],
                                'Use_Status': i['Use_Status'],
                                'status': 'A'
                            }
                            netdevice_interface_final_excel.append(
                                netdevice_interface_final_info_add)

            logger.info("需要更新%d条,新增%d条", update_netdevice_interface_num,
                        add_netdevice_interface_num)

            if excel_flag:
                if netdevice_interface_final_excel:
                    excel(netdevice_interface_final_excel,
                          'netdevice_interface')

            if update_flag:
                import_time = datetime.datetime.now()
                if update_netdevice_interface_num != 0 or add_netdevice_interface_num != 0:
                    netdevice_dict = {
                        "Switch_Ports": netdevice_interface_final
                    }
                    # print json.dumps(netdevice_dict)
                    logger.info("开始导入数据")
                    update_result = cmdbuild_api.put_update(
                        token, json.dumps(netdevice_dict))
                    cost_time = cost(import_time)
                    logger.info("导入数据成功! 耗时%d秒", cost_time)
                    logger.info("cmdbuild返回结果:" + update_result)
                else:
                    cost_time = cost(import_time)
                    logger.info("两边数据一致! 耗时%d秒", cost_time)
        elif not netdevice_interface_h3c:
            logger.info("H3C平台采集无数据!")
        elif not netdevice_interface_cmdb:
            logger.info("cmdbuild平台采集无数据!")
    except Exception, e:
        logger.error("导入数据失败! 原因:%s", e)
Пример #20
0
def get_h3c_netdevice_interface():
    get_h3c_time = datetime.datetime.now()
    logger.info("H3C平台网络接口数据开始采集!")
    try:
        netdevice_interface_h3c_num = 0
        for i in device['device']:
            # 循环获取接口、trunk、access信息
            interface_url = '/imcrs/plat/res/device/' + i['id'] + '/interface?size=1000'
            trunk_url = '/imcrs/vlan/trunk?devId=' + i['id'] + '&size=1000'
            access_url = '/imcrs/vlan/access?devId=' + i['id'] + '&size=1000'
            interface = json.loads(h3c_api.page(interface_url))
            trunk = json.loads(h3c_api.page(trunk_url))
            access = json.loads(h3c_api.page(access_url))

            # 判断接口与trunk、access口的ifIndex是否相同,添加Vlan信息
            # 输出主机名、端口号、vlan、对端ip、主机名+序列号、mac地址、状态
            if interface != {}:
                for x in interface['interface']:
                    if trunk:
                        interface1 = None
                        if str(trunk['trunkIf']).count('ifIndex') > 1:
                            for y in trunk['trunkIf']:
                                while y['ifIndex'] == x['ifIndex']:
                                    for k in netasset['netAsset']:
                                        while i['symbolName'] == k['deviceName']:
                                            if x['ifDescription'].count('/') > 1:
                                                r = x['ifDescription'].replace('-', '').split('/')[0].strip(
                                                    filter(str.isalpha, str(x['ifDescription'])))
                                                if k['name'].isdigit():
                                                    s = k['name']
                                                else:
                                                    s = k['relPos']
                                                if r == s:
                                                    interface1 = i['symbolName']
                                                    interface_vlan.append(
                                                        {'Description': i['symbolName'] + '_' + x['ifDescription'],
                                                         'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                                         'Port': x['ifDescription'],
                                                         'Vlan': y['allowedVlans'],
                                                         'Use_Status': x['statusDesc'],
                                                         'code': '1'})
                                            else:
                                                if not (k['desc'].__contains__('Nexus2248 Chassis') or
                                                            k['desc'].__contains__('Nexus2348TP Chassis')):
                                                    interface1 = i['symbolName']
                                                    interface_vlan.append(
                                                        {'Description': i['symbolName'] + '_' + x['ifDescription'],
                                                         'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                                         'Port': x['ifDescription'],
                                                         'Vlan': y['allowedVlans'],
                                                         'Use_Status': x['statusDesc'],
                                                         'code': '2'})
                                            break
                                    break
                        elif str(trunk['trunkIf']).count('ifIndex') == 1:
                            while y['ifIndex'] == x['ifIndex']:
                                for k in netasset['netAsset']:
                                    while i['symbolName'] == k['deviceName']:
                                        interface1 = i['symbolName']
                                        interface_vlan.append(
                                            {'Description': i['symbolName'] + '_' + x['ifDescription'],
                                             'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                             'Port': x['ifDescription'],
                                             'Vlan': y['allowedVlans'],
                                             'Use_Status': x['statusDesc'],
                                             'code': '3'})
                                        break
                                break

                    if access:
                        interface2 = None
                        if interface1 is None:
                            if str(access['accessIf']).count('ifIndex') > 1:
                                for z in access['accessIf']:
                                    while z['ifIndex'] == x['ifIndex']:
                                        for k in netasset['netAsset']:
                                            while i['symbolName'] == k['deviceName']:
                                                if x['ifDescription'].count('/') > 1:
                                                    r = x['ifDescription'].replace('-', '').split('/')[0].strip(
                                                        filter(str.isalpha, str(x['ifDescription'])))
                                                    if k['name'].isdigit():
                                                        s = k['name']
                                                    else:
                                                        s = k['relPos']
                                                    if int(r) < 100:
                                                        if r == s:
                                                            interface2 = i['symbolName']
                                                            interface_vlan.append(
                                                                {'Description': i['symbolName'] + '_' + x[
                                                                    'ifDescription'],
                                                                 'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                                                 'Port': x['ifDescription'],
                                                                 'Vlan': z['pvid'],
                                                                 'Use_Status': x['statusDesc'],
                                                                 'code': '4'})
                                                    else:
                                                        interface2 = i['symbolName']
                                                        # 当relPos>100时,序列号为主机,端口号为FEX型
                                                        if int(k['relPos']) == 1:
                                                            interface_vlan.append(
                                                                {'Description': i['symbolName'] + '_' + x[
                                                                    'ifDescription'],
                                                                 'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                                                 'Port': x['ifDescription'],
                                                                 'Vlan': z['pvid'],
                                                                 'Use_Status': x['statusDesc'],
                                                                 'code': '5'})
                                                else:
                                                    if not (k['desc'].__contains__('Nexus2248 Chassis') or
                                                                k['desc'].__contains__('Nexus2348TP Chassis')):
                                                        interface2 = i['symbolName']
                                                        interface_vlan.append(
                                                            {'Description': i['symbolName'] + '_' + x[
                                                                'ifDescription'],
                                                             'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                                             'Port': x['ifDescription'],
                                                             'Vlan': z['pvid'],
                                                             'Use_Status': x['statusDesc'],
                                                             'code': '6'})
                                                break
                                        break
                            elif str(access['accessIf']).count('ifIndex') == 1:
                                while z['ifIndex'] == x['ifIndex']:
                                    for k in netasset['netAsset']:
                                        while i['symbolName'] == k['deviceName']:
                                            interface2 = i['symbolName']
                                            interface_vlan.append(
                                                {'Description': i['symbolName'] + '_' + x['ifDescription'],
                                                 'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                                 'Port': x['ifDescription'],
                                                 'Vlan': z['pvid'],
                                                 'Use_Status': x['statusDesc'],
                                                 'code': '7'
                                                 })
                                            break
                                    break

                    if interface1 is None and interface2 is None:
                        for k in netasset['netAsset']:
                            if i['symbolName'] == k['deviceName']:
                                if x['ifDescription'].count('/') > 1:
                                    r = x['ifDescription'].replace('-', '').split('/')[0].strip(
                                        filter(str.isalpha, str(x['ifDescription'])))
                                    if k['name'].isdigit():
                                        s = k['name']
                                    else:
                                        s = k['relPos']
                                    if r == s:
                                        interface_vlan.append(
                                            {'Description': i['symbolName'] + '_' + x['ifDescription'],
                                             'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                             'Port': x['ifDescription'],
                                             'Vlan': '',
                                             'Use_Status': x['statusDesc'],
                                             'code': '8'})
                                    # todo:华为交换机 S5720-52X-PWR-SI-AC 单台有机柜号,目前规则不符合,此为定制
                                    elif k['name'].__contains__('S5720'):
                                        interface_vlan.append(
                                            {'Description': i['symbolName'] + '_' + x['ifDescription'],
                                             'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                             'Port': x['ifDescription'],
                                             'Vlan': '',
                                             'Use_Status': x['statusDesc'],
                                             'code': '9'})
                                else:
                                    # 不包含 Nexus2248 Chassis型号
                                    if not (k['name'].__contains__('Nexus2248 Chassis') and
                                                k['name'].__contains__('Nexus2348TP Chassis')):
                                        interface_vlan.append(
                                            {'Description': i['symbolName'] + '_' + x['ifDescription'],
                                             'Switch_Name': i['symbolName'] + '-' + k['serialNum'],
                                             'Port': x['ifDescription'],
                                             'Vlan': '',
                                             'Use_Status': x['statusDesc'],
                                             'code': '10'})

        # 过滤非物理接口
        for i in interface_vlan:
            interface_port = i['Port'].lower()
            if interface_port.__contains__('ethernet') \
                    or interface_port.__contains__('fastethernet') \
                    or interface_port.__contains__('gigabitethernet') \
                    or interface_port.__contains__('flex'):
                netdevice_interface_h3c_info = {'Description': i['Description'],
                                                'Switch_Name': i['Switch_Name'],
                                                'Port': i['Port'],
                                                'Vlan': i['Vlan']}
                if i['Use_Status'] == u'Up':
                    netdevice_interface_h3c_info['Use_Status'] = u'已使用'
                else:
                    netdevice_interface_h3c_info['Use_Status'] = u'未使用'
                netdevice_interface_h3c.append(netdevice_interface_h3c_info)
                netdevice_interface_h3c_num += 1

        excel(netdevice_interface_h3c, 'netdevice_interface_h3c')
        cost_h3c_time = cost(get_h3c_time)
        logger.info("H3C平台网络接口数据采集成功! 采集%d条数据,耗时%d秒" % (netdevice_interface_h3c_num, cost_h3c_time))
    except Exception, e:
        logger.error("H3C平台网络接口数据采集失败! 原因:%s", e)
Пример #21
0
def import_netdevice():
    import_netdevice_time = datetime.datetime.now()
    logger.info("网络设备数据开始比较!")

    update_netdevice_num = 0
    add_netdevice_num = 0
    try:
        if netdevice_h3c and netdevice_cmdb:
            for i in netdevice_h3c:
                import_temp = None
                for j in netdevice_cmdb:
                    if j['DevName'] and i['Series_No'] and j['Series_No']:
                        while i['Series_No'].upper() == j['Series_No'].upper():
                            import_temp = i['Series_No']
                            if cmp(i, j) != 0:
                                netdevice_final.append(
                                    {'Description': j['Description'],
                                     'DevName': i['DevName'],
                                     'Manage_IP_Addr': i['Manage_IP_Addr'],
                                     'Series_No': i['Series_No'],
                                     'CI_modelid': i['CI_modelid'],
                                     'MANUFACTURE_Factory': i['MANUFACTURE_Factory'],
                                     'OS_Version': i['OS_Version'],
                                     'OS_Bin': i['OS_Bin']})
                                if excel_flag:
                                    netdevice_final_excel.append({'Description': j['Description'],
                                                                  'DevName': j['DevName'],
                                                                  'Manage_IP_Addr': j['Manage_IP_Addr'],
                                                                  'Series_No': j['Series_No'],
                                                                  'CI_modelid': j['CI_modelid'],
                                                                  'MANUFACTURE_Factory': j[
                                                                      'MANUFACTURE_Factory'],
                                                                  'OS_Version': j['OS_Version'],
                                                                  'OS_Bin': j['OS_Bin'],
                                                                  'Status': 'O'})
                                    netdevice_final_excel.append({'Description': j['Description'],
                                                                  'DevName': i['DevName'],
                                                                  'Manage_IP_Addr': i['Manage_IP_Addr'],
                                                                  'Series_No': i['Series_No'],
                                                                  'CI_modelid': i['CI_modelid'],
                                                                  'MANUFACTURE_Factory': i[
                                                                      'MANUFACTURE_Factory'],
                                                                  'OS_Version': i['OS_Version'],
                                                                  'OS_Bin': i['OS_Bin'],
                                                                  'Status': 'U'})
                                update_netdevice_num += 1
                            break

                if import_temp is None:
                    add_netdevice_num += 1
                    netdevice_final.append(i)
                    if excel_flag:
                        netdevice_final_excel.append({'Description': i['Description'],
                                                      'DevName': i['DevName'],
                                                      'Manage_IP_Addr': i['Manage_IP_Addr'],
                                                      'Series_No': i['Series_No'],
                                                      'CI_modelid': i['CI_modelid'],
                                                      'MANUFACTURE_Factory': i[
                                                          'MANUFACTURE_Factory'],
                                                      'OS_Version': i['OS_Version'],
                                                      'OS_Bin': i['OS_Bin'],
                                                      'Status': 'A'})

            logger.info("需要更新%d条,新增%d条!", update_netdevice_num, add_netdevice_num)

            if excel_flag:
                excel(netdevice_final_excel, 'netdevice')
            if update_flag:
                if update_netdevice_num != 0 or add_netdevice_num != 0:
                    netdevice_dict = {"NetDevice": netdevice_final}
                    cmdbuild_api = CMDBuildAPI()
                    token = cmdbuild_api.get_token()
                    update_result = cmdbuild_api.put_update(token, json.dumps(netdevice_dict))
                    # print update_result.decode("UTF-8")
                    excel(netdevice_final, 'netdevice')
                    cost_time = cost(import_netdevice_time)
                    logger.info("更新数据成功! 耗时%d秒", cost_time)
                    logger.info("cmdbuild平台更新返回结果:%s", update_result)
                else:
                    cost_time = cost(import_netdevice_time)
                    logger.info("两边数据一致,无需更新! 耗时%d秒", cost_time)
        elif not netdevice_h3c:
            logger.info("H3C平台没有获取数据!")
        elif not netdevice_cmdb:
            logger.info("cmdbuild没有获取数据!")
    except Exception, e:
        logger.info("更新数据失败!原因:%s", e)
Пример #22
0
def import_TProcess(TProcessList, TProcess_cmdb_list):
    TProcess_final = []
    TProcess_final_excel = []
    update_TProcess_num = 0
    add_TProcess_num = 0
    logger.info("本币进程数据开始比较!")
    import_time = datetime.datetime.now()
    try:
        for i in TProcessList:
            if i['PRTYPE'] != '12':
                import_temp = None
                for j in TProcess_cmdb_list:
                    if i['DisplayName'].strip().upper(
                    ) == j['DisplayName'].strip().upper():  # 去掉CMDB中进程名的回车、空格等
                        import_temp = j['Description']
                        if i['DisplayName'] != j['DisplayName']:
                            TProcess_final.append({
                                'Description':
                                j['Description'],
                                'DisplayName':
                                i['DisplayName']
                            })
                            if excel_flag:
                                TProcess_final_excel.append({
                                    'Description':
                                    j['Description'],
                                    'DisplayName':
                                    j['DisplayName'],
                                    'PRTYPE':
                                    i['PRTYPE'],
                                    'Status':
                                    'O'
                                })
                                TProcess_final_excel.append({
                                    'Description':
                                    j['Description'],
                                    'DisplayName':
                                    i['DisplayName'],
                                    'PRTYPE':
                                    i['PRTYPE'],
                                    'Status':
                                    'U'
                                })
                            update_TProcess_num += 1
                            break

                if import_temp is None:
                    add_TProcess_num += 1
                    TProcess_final.append({
                        'Description': i['Description'],
                        'DisplayName': i['DisplayName']
                    })
                    if excel_flag:
                        TProcess_final_excel.append({
                            'Description':
                            i['Description'],
                            'DisplayName':
                            i['DisplayName'],
                            'PRTYPE':
                            i['PRTYPE'],
                            'Status':
                            'A'
                        })
        logger.info("需要更新%d条,新增%d条!", update_TProcess_num, add_TProcess_num)

        if excel_flag:
            excel(TProcess_final_excel, 'TProcess_final')
        if update_flag:
            if update_TProcess_num != 0 or add_TProcess_num != 0:
                TProcess_dict = {"RuntimeProcess": TProcess_final}
                update_result = cmdbuild_api.put_update(
                    token, json.dumps(TProcess_dict))
                cost_time = cost(import_time)
                logger.info("更新数据成功! 耗时%d秒", cost_time)
                logger.info("cmdbuild平台更新返回结果:%s", update_result)
            else:
                cost_time = cost(import_time)
                logger.info("两边数据一致,无需更新! 耗时%d秒", cost_time)
    except Exception, e:
        logger.info("更新数据失败!原因:%s", e)
Пример #23
0
def import_storage(ips):
    storage_dict = mult_ssh2_storage(ips)
    for i in storage_dict:
        storage_fact.append(i['storage_fact'])
        storage_lun_fact.append(i['storage_lun_fact'])
    import_time = datetime.datetime.now()
    logger.info("Storage数据开始比较!")
    try:
        update_storage_num = 0
        add_storage_num = 0
        for i in storage_fact:
            storage_temp = None
            for j in Storage_cmdb:
                if i[0]['Series_No'] and j['Series_No']:
                    while i[0]['Series_No'].upper() == j['Series_No'].upper():
                        storage_temp = i[0]['Series_No']
                        if cmp(i[0], j) != 0:
                            Storage_final.append({
                                'Description':
                                j['Description'],
                                # 'Firmware': i['Firmware'],
                                'DevName':
                                i[0]['DevName'],
                                'Series_No':
                                i[0]['Series_No'],
                                'Ctlr_Frequency':
                                i[0]['Ctlr_Frequency'],
                                'MANUFACTURE_Factory':
                                i[0]['MANUFACTURE_Factory'],
                                'CI_modelid':
                                i[0]['CI_modelid'],
                                'IP':
                                i[0]['IP']
                            })
                            j['status'] = 'O'
                            Storage_excel.append(j)
                            i[0]['status'] = 'A'
                            Storage_excel.append(i[0])
                            update_storage_num += 1
                        break

            if storage_temp is None:
                Storage_final.append(i[0])
                i[0]['status'] = 'A'
                Storage_excel.append(i[0])
                add_storage_num += 1

        logger.info("Storage数据比较结束!修改%d条,新增%d条", update_storage_num,
                    add_storage_num)

        if update_flag:
            if update_storage_num != 0 or add_storage_num != 0:
                storage_dict = {"Storage": Storage_final}
                update_result = cmdbuild_api.put_update(
                    token, json.dumps(storage_dict))
                cost_os_time = cost(import_time)
                logger.info("导入数据成功! 耗时%d秒", cost_os_time)
                logger.info("cmdbuild返回结果:" + update_result)
            else:
                cost_os_time = cost(import_time)
                logger.info("两边数据一致! 耗时%d秒", cost_os_time)

        if excel_flag:
            if Storage_excel:
                excel(Storage_excel, 'Storage')

    except Exception, e:
        logger.error("Storage数据比较失败,报错内容:%s", e)
Пример #24
0
def import_netdevice_interface():
    logger.info("网络接口数据开始比较!")
    try:
        update_netdevice_interface_num = 0
        add_netdevice_interface_num = 0
        if netdevice_interface_cmdb and netdevice_interface_h3c:
            for i in netdevice_interface_h3c:
                compare_temp = None
                for j in netdevice_interface_cmdb:
                    # 机器名和端口相同时
                    # ethernet、fastethernet、gigabitethernet输出值
                    if i['Switch_Name'] and j['Switch_Name']:
                        while i['Switch_Name'].upper() == j['Switch_Name'].upper() and i['Port'] == restore(
                                str(j['Port'])):
                            compare_temp = i['Description']
                            if i['Port'] and i['Port'] != 'FastEthernet0' and i['Port'] != 'FastEthernet1':
                                if cmp(i, j) != 0:
                                    netdevice_interface_final_info = {'Description': j['Description'],
                                                                      'Switch_Name': i['Switch_Name'],
                                                                      'Port': i['Port'],
                                                                      'Vlan': i['Vlan'],
                                                                      'Use_Status': i['Use_Status']}
                                    if j['Use_Status'] == u'待下线':
                                        netdevice_interface_final_info['Use_Status'] = j['Use_Status']
                                        if cmp(netdevice_interface_final_info, j):
                                            netdevice_interface_final.append(netdevice_interface_final_info)
                                    else:
                                        netdevice_interface_final_info['Use_Status'] = i['Use_Status']
                                        netdevice_interface_final.append(netdevice_interface_final_info)
                                    update_netdevice_interface_num += 1
                                    if excel_flag:
                                        netdevice_interface_final_info_old = {'Description': j['Description'],
                                                                              'Switch_Name': j['Switch_Name'],
                                                                              'Port': j['Port'],
                                                                              'Vlan': j['Vlan'],
                                                                              'Use_Status': j['Use_Status'],
                                                                              'status': 'O'
                                                                              }
                                        # print netdevice_interface_final_info_old
                                        netdevice_interface_final_info_update = {'Description': j['Description'],
                                                                                 'Switch_Name': i['Switch_Name'],
                                                                                 'Port': i['Port'],
                                                                                 'Vlan': i['Vlan'],
                                                                                 'status': 'U'
                                                                                 }
                                        if j['Use_Status'] == u'待下线':
                                            netdevice_interface_final_info_update['Use_Status'] = j['Use_Status']
                                            if cmp(netdevice_interface_final_info, j):
                                                netdevice_interface_final_excel.append(
                                                    netdevice_interface_final_info_old)
                                                netdevice_interface_final_excel.append(
                                                    netdevice_interface_final_info_update)
                                        else:
                                            netdevice_interface_final_info_update['Use_Status'] = i['Use_Status']
                                            netdevice_interface_final_excel.append(netdevice_interface_final_info_old)
                                            netdevice_interface_final_excel.append(netdevice_interface_final_info_update)
                                        # print netdevice_interface_final_info_update


                            break

                # 如果无法匹配,新增数据
                # ethernet、fastethernet、gigabitethernet输出值
                if compare_temp is None:
                    if i['Port'] and i['Port'] != 'FastEthernet0' and i['Port'] != 'FastEthernet1':
                        netdevice_interface_final.append(i)
                        add_netdevice_interface_num += 1
                        if excel_flag:
                            netdevice_interface_final_info_add = {'Description': i['Description'],
                                                                  'Switch_Name': i['Switch_Name'],
                                                                  'Port': i['Port'],
                                                                  'Vlan': i['Vlan'],
                                                                  'Use_Status': i['Use_Status'],
                                                                  'status': 'A'
                                                                  }
                            netdevice_interface_final_excel.append(netdevice_interface_final_info_add)

            logger.info("需要更新%d条,新增%d条", update_netdevice_interface_num, add_netdevice_interface_num)

            if excel_flag:
                if netdevice_interface_final_excel:
                    excel(netdevice_interface_final_excel, 'netdevice_interface')

            if update_flag:
                import_time = datetime.datetime.now()
                if update_netdevice_interface_num != 0 or add_netdevice_interface_num != 0:
                    netdevice_dict = {"Switch_Ports": netdevice_interface_final}
                    # print json.dumps(netdevice_dict)
                    logger.info("开始导入数据")
                    update_result = cmdbuild_api.put_update(token, json.dumps(netdevice_dict))
                    cost_time = cost(import_time)
                    logger.info("导入数据成功! 耗时%d秒", cost_time)
                    logger.info("cmdbuild返回结果:" + update_result)
                else:
                    cost_time = cost(import_time)
                    logger.info("两边数据一致! 耗时%d秒", cost_time)
        elif not netdevice_interface_h3c:
            logger.info("H3C平台采集无数据!")
        elif not netdevice_interface_cmdb:
            logger.info("cmdbuild平台采集无数据!")
    except Exception, e:
        logger.error("导入数据失败! 原因:%s", e)