python nginx仮想ホスト構成の読み込みmysqlデータベースの挿入
3790 ワード
## 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()
#########