微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python 读取nginx虚拟主机配置插入myqsql 数据库

##获取Nginx 配置文件虚拟主机文件路径和文件名称#######
##https://github.com/fatiherikli/Nginxparser ######### pip install Nginxparser#######
def getConf():
    from Nginxparser import load
    filepath = "/etc/Nginx/conf"
    for parent, dirnames, filenames in os.walk(filepath):
        for filename in set(filenames):
            file = (os.path.join(parent, filename))
            print(file)
            try:
                data = load(open(file))
                T = getDict(data, list())
                D = dict()
                D["server"] = list()
                D["listen"] = list()
                D["upstream"] = list()
                for x in T:
                    if x["key"] == "upstream":
                        D["upstream"].append(x["value"])
                    elif x["key"] == "server_name":
                        D["server_name"] = x["value"]
                    elif x["key"] == "server":
                        try:
                            D["server"].append(x["value"])
                        except:
                            pass
                    elif x["key"] == "listen":
                        D["listen"].append(x["value"])

                print("配置文件为: " + file)
                yield D
            except:
                 pass


##########递归多级列表拆分list转换为字典
def getDict(x, l=list()):
    a = ["key", "value"]
    for i in x:
        if isinstance(i, list):
            if isinstance(i[0], list):
                for y in i:
                    # print("#######: ", y)
                    getDict(y, l)
            else:
                # print("xxxxxxxxxxxxxx: ", dict(zip(a, i)))
                l.append(dict(zip(a, i)))
        else:
            l.append(dict(zip(a, x)))
    return l


#######获取配置插入数据库#########
def MysqLConfig(sql):
    import pyMysqL
    USERNAME = "ops"
		PASSWORD = "123456"
    HOST = "192.168.1.1"
    DATABASE = "op_Nginx"
    dbconfig = pyMysqL.connect(HOST, USERNAME, PASSWORD, DATABASE)
    try:
        print(sql)
        cursor = dbconfig.cursor()
        try:
            cursor.execute(sql)
            dbconfig.commit()
            return cursor
        except Exception as e:
           pass
    except Exception as err:
        print(err)
				
def createNginxConfigtab():
    sql = """CREATE TABLE  if not exists  virtual_host (
             env CHAR(32) NOT NULL,
             upstreamname CHAR(128),
             domainname CHAR(200),
             frontport CHAR(128),
             backendip CHAR(128)
             )"""
    MysqLConfig(sql)
createNginxConfigtab()


###########数据插入###########
def Nginxtbale(env, upname, dominame, frontport, backendip):
    try:
        sql = """INSERT INTO virtual_host(env,upstreamname,
                         domainname,  frontport, backendip)
                         VALUES ('{}','{}', '{}','{}','{}')""".format(env, upname, dominame, frontport,
                                                                      backendip)
        MysqLConfig(sql)
    except Exception as e:
        # 如果发生错误则回滚
        print(e)


#######读出配置到数据库#############

def insertNginxConfig():
    for i in getConf():
        try:
            Nginxtbale("test", ",".join(list(set((i["upstream"])))), i["server_name"].replace(" ", ","),
                       ",".join(i["listen"]), ",".join(i["server"]))
        except:
             print(i)
insertNginxConfig()

#########

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐