Ejemplo n.º 1
0
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("配置加载失败,请检查配置")
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
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]