パイソン読むnginxのバーチャルホストの設定、データベースの挿入myqsql

## nginxのバーチャルホストの設定ファイルのパスとファイル名#######取得
## HTTPS://github.com/fatiherikli/nginxparser ######### PIPインストールnginxparserの#####を## 
DEF getconf():
    ロードnginxparserインポートから
    ファイルパス= "の/ etc / nginxの/ confに" 
    os.walk(ファイルパス)での親、にdirnames、ファイル名の:
        :SET(ファイル名)でのファイル名の
            ファイル=(はos.path。参加(親、ファイル名))
            を印刷(ファイル)
            の試行:
                データ=ロード(オープン(ファイル))
                T = GetDict(データ、リスト())
                D = dictの()
                D [ "サーバー"] =リスト()
                Dの[ " ]」聞く=リスト() 
                上流「] =リスト()D ["
                :Tにおけるxの
                    X [ "キー"] == "上流"場合:
                        D [ "上流"](X [ "値"])追加。
                    ELIFのX [ "キー"] == "サーバ名":
                        D [ "サーバ名"]はXの= [ "値"] 
                    ELIFのX [ "キー"] == "サーバ":
                        試す:
                            D [ "サーバ"](X [ "値"])追加。
                        除い:
                            合格
                    のelif X [ "キー"] ==「聞きます" 
                        D"(X追加[ "聞く] ["値"]) 

                、印刷("配置文件为: "ファイル+) 
                収量D 
            :を除く
                 渡し


##########再帰的なマルチレベルリストが辞書に変換リストを分割
DEF getDict(X、L =リスト()):
    A = [ "キー"、 "値"] 
    I xのための:
        場合でisinstance(I、リスト):
            でisinstance(I [0]、リスト)場合:
                yの中I: 
                    #プリント( "#######"、Y)
                    getDict(Y、L)
            他:
                #プリント( "xxxxxxxxxxxxxx:"、辞書(ZIP(I)))
                l.append(辞書( ZIP(I)))
        他:
            l.append(辞書(ZIP(X)))
    戻りL 


#######获取配置插入数据库######### 
DEF mysqlConfig(SQL ):
    輸入pymysqlの
    USERNAME = "OPS" 
		PASSWORD = "123456"
    HOST = "192.168.1.1" 
             ドメイン名CHAR(200)、
    DATABASE = "op_nginx" 
    DBCONFIG = pymysql.connect(HOST、USERNAME、PASSWORD、DATABASE)
    してみてください:
        プリント(SQL) 
        )(カーソル= dbconfig.cursor 
        してみてください:
            cursor.execute(SQL)
            dbconfig.commit()
            の戻りカーソル
        などの例外を除き、 E:
           合格
    :ERRとして例外を除いて
        プリント(ERR)
				
createNginxConfigtab DEF():
    SQL = "" "CREATE TABLEをVIRTUAL_HOSTが存在しない場合(
             ENV CHAR(32)NOT NULL、
             upstreamnameのCHAR(128)
             、CHAR(128)frontport 
             backendip CHAR(128) 
             )""" 
    mysqlConfig(SQL)
createNginxConfigtab()


###########数据插入########### 
DEF nginxtbale(ENV、upname、dominame、frontport、backendip) :
    試す:
        SQLは= "" "VIRTUAL_HOST。INSERT INTO(ENV、upstreamname、
                         ドメイン名、frontport、backendip)
                         VALUES( '{}'、 '{}'、 '{}'、 '{}'、 '{}')" "" .format(ENV、upname、dominame、frontport、
                                                                      backendip)
        mysqlConfig(SQL)
    Eなどの例外を除い。
        エラーが#ロールバックが発生した場合
        (E)の印刷を


#######構成データベース#############読み出すため

DEF insertNginxConfigを():
    I getConfにするための()  
        試してみてください。
            nginxtbale( "試験"、 " "ジョイン(リスト(セット((iは["上流"]))))、iは["サーバ名が"]。置き換える(""、 " ")
                       "、"。ジョイン(I [ "聞く"])、 " "参加(I ["サーバー"]))。
        除い:
             プリント(I)
insertNginxConfig()

#########


おすすめ

転載: blog.51cto.com/breaklinux/2402003