def loadApiConfig(): configPath="{basedir}/config/ApiConfig.json".format(basedir=config[appconfig].BASE_DIR) with open(configPath,'r') as cf: configdict = json.load(cf) if configdict: return configdict else: logger.info("配置加载失败,请检查配置")
def get_host_ip(): try: logger.info("get本地ip地址") s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect(('8.8.8.8', 80)) ip = s.getsockname()[0] finally: s.close() return ip
def post_assets_report(putdata): logger.info("向服务端提交资产数据") p = requests.post(url=config["apiassetsreport"], data=putdata, headers=get_header()) if p.status_code == 201: print "资产信息汇报成功" else: print "资产信息汇报失败", p.status_code
def parseDmi(parsed_data): dic = {} logger.info("get资产信息,并处理成dict") parsed_data = [ i for i in parsed_data if i.startswith('System Information') ] parsed_data = [i for i in parsed_data[0].split('\n')[1:] if i] dmi_dic = dict([i.strip().split(':') for i in parsed_data]) dic['manufacturer'] = dmi_dic['Manufacturer'].strip() dic['model'] = dmi_dic['Product Name'].strip() dic['sn'] = dmi_dic['Serial Number'].strip() return dic
def get_header(): """ 生成token信息返回 :return: """ try: logger.info("get token") r = requests.post(url=config["apitoken"], data={ "username": config["username"], "password": config["password"] }) token = json.loads(r.text)['token'] header = {"Authorization": "JWT %s" % token} return header except Exception, e: print "生成token失败", e
def get(self): """ 往资产接口上传数据 :return: """ data = GetDmi() # print "datatatata",data parsed_data_dmi = parseData(data) # print "papapapa",parsed_data_dmi dmi = parseDmi(parsed_data_dmi) #采购时间需要做异常处理(只处理物理机,不处理虚拟机,容器等) buy_info = getPeriod.periodDate(dmi["sn"]) if buy_info: # print "bbbbb",buy_info putdata = { "name": "%s" % number(), "management_ip": get_host_ip(), "sn": "%s" % dmi["sn"], "model": dmi["model"], "manufacturer": dmi["manufacturer"], "buy_time": buy_info["buy_info"]["start_time"], "expire_date": buy_info["buy_info"]["expires_date"], "status": 3, "assets_type": "server" } logger.info("dell服务器资产信息提交") return putdata else: putdata = { "name": "%s" % number(), "management_ip": get_host_ip(), "sn": "%s" % dmi["sn"], "model": dmi["model"], "manufacturer": dmi["manufacturer"], "buy_time": "", "expire_date": "", "status": 3, "assets_type": "server" } logger.info("非dell服务器资产信息提交") return putdata
def number(): logger.info("随机产生编号") nowtime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") m = hashlib.md5() m.update("%s%s" % (get_host_ip(), nowtime)) return m.hexdigest()[:-20]