##获取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() #########
python 读取nginx虚拟主机配置插入myqsql 数据库
猜你喜欢
转载自blog.51cto.com/breaklinux/2402003
今日推荐
周排行