##获取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] 举报,一经查实,本站将立刻删除。