python切割nginx配置文件的脚本

#!/usr/bin/env python
import os
import sys
def text_with_color(color,text):
  def base(color,text):
    color_code = {"black":30,
                  "red":31,
                  "green":32,
                  "yellow":33,
                  "blue":34,
                  "white":47
                  }
    return "\033[;%sm%s\033[0m" %(color_code[color],text)
  return  base(color,text)
def read_nginx_file(file_name):
    try:
        with open(file_name) as f:
            all_content = f.readlines()
    except Exception,err:
        print "Open nginx config file ERROR,err_msg:",err
        sys.exit(3)
        
    temp = all_content.pop()
    count = 0
    head = []
    servers = {}
    server_count = 1
    
    while count < len(all_content):
        if not all_content[count].strip().replace(" ","") == "server{":
            if len(all_content[count].strip()) != 0:
                head.append(all_content[count])
            count += 1
        else:
            break
        
    
    while count < len(all_content):
        servers[server_count] = []
        servers[server_count].append(all_content[count])
        count += 1
        while count < len(all_content):
            if not all_content[count].strip().replace(" ","") == "server{":
                if len(all_content[count].strip()) != 0:
                    servers[server_count].append(all_content[count])
                count += 1
            else:
                server_count += 1
                break
    
    head.extend(["\n","    include conf.d/*.conf","\n","}"])       
    return head,servers   
def write_main_conf_file(old_file_name,config):
    os.rename(old_file_name,old_file_name + ".back")
    main_file = open("nginx.conf","wb")
    for i in config:
        main_file.write(i)
    main_file.close()
def write_server_conf_file(server):
    if not os.path.exists("conf.d"):
        os.mkdir("conf.d")
    for i in server:
        if "server_name" in i.split():
            server_file = open("conf.d" + "/" + i.split()[1].strip(";") + ".conf","wb")
    for i in server:
        server_file.write(i)
    server_file.close()
    
def file_format_clear(config):
    count = 0
    for i in config:
        config[count] = i.strip()+"\n"
        count += 1
    space = "    "
    indent_count = 0
    count = 0
    for i in config:        
        if "{" in config[count]:
            config[count] = space * indent_count + i
            indent_count += 1
        elif "}" in config[count]:
            config[count] = space * (indent_count -1 ) + i
            indent_count -= 1
        else:
            config[count] = space * indent_count + i
        count += 1
if __name__ == ‘__main__‘:   
    file_name = "nginx.conf"
    head,servers = read_nginx_file(file_name)                               #load nginx config file
        
    file_format_clear(head)                                                 #format clear    
    for i in servers.keys():
        file_format_clear(servers[i])
        
    write_main_conf_file(file_name,head)                                    #write main config file   
    for i in servers.keys():                                                #write server config file
        write_server_conf_file(servers[i])
        
    print text_with_color("green","Nginx config file cut success.")
    print text_with_color("yellow","Please copy nginx.conf and conf.d to your nginx conf directory.")

  

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。