• Python-S13作业-day3-之编辑ha.conf配置文件


                  Python-S13作业-day3-之编辑ha.conf配置文件               

    需求:

    让用户输入字符串类型的字典,实现对配置文件指定,backend  www.oldboy.org下的内容进行

    * 查询

    * 增加:backend   record

    * 增加record:backend存在,只增加record

    思路:

    总共分二个函数,三个大功能:

    fetch : 查询操作,把指定backend  www.oldboy.com 下的内容取出来;

    add  : 1.连backend都不存在,new_ha_.conf文件末尾添加要加入的backend;

        2.backend存在,record也存在,把ha.conf复制一份new_ha_.conf后退出程序;

        3.backend存在,record不存在,则在backend下添加record值;

    Readme:

    这个程序包含两个函数;

    这个程序共3个文件:

      * 主程序文件

      * ha.conf配置文件

      *执行程序后会产生新的new_ha_.conf配置文件

    主程序:

    #!/usr/bin/python env
    #_*_coding:utf-8 _*_
    def fetch(backend):
        result = []
        #存放取出来的结果
        with open('ha.conf','r') as f:
            flag = False
            for line in f:
            #一行一行的读取文件里面的内容
                if line.strip().startswith("backend") and line.strip() == "backend " + backend:
                #如果找到的不是空行,开头是backend  并且内容为backend www.oldboy.org,注意:上面backend后面
                #有个空格
                    flag = True
                    #找到了backend
                    continue
                    #跳过这次循环,因为backend不是我们想要的
                if flag and line.strip().startswith("backend"):
                #如果flag为True,并且不是空行,开头是backend,说
                #找到了第二行的backend
                    flag = False
                    break
                    #就可以退出程序了
                if flag and line.strip():
                #如果flag是True,并且不是空行,就把内容全部写入到result中
                    result.append(line.strip())
        return result
    # res = fetch("buy.oldboy.org")
    # print(res)
    
    def add(backend,record):
        record_list = fetch(backend)
        #把上面查找的结果赋值给record_list
        if not record_list:
        #空为False,如果record_list不是Ture,
        #就是看record_list里面有没有结果
            with open('ha.conf','r') as old,open("new.conf",'w') as new:
                for line in old:
                    new.write(line)
                #把老文件的内容写入到新文件中
                new.write("
    " * 2 + "backend " + backend + "
    ")
                new.write(" " * 8 + record + "
    ")
                #在文件最后追加写入想要写入的内容
        else:
            if record in record_list:
                import shutil
                shutil.copy("ha.conf","new.conf")
                #如果在在record_list能够找到record的值,就把ha.conf复制一份
            else:
                record_list.append(record)
                #在record_list列表中没有想要加入的record的值,就先把record值,加入到record_list中
                with open('ha.conf','r') as old,open('new.conf','w') as new:
                    flag = False
                    for line  in old:
                        if line.strip().startswith('backend') and line.strip() == "backend " + backend:
                            flag = True
                            #找到想要加入backend,record的行
                            new.write(line)
                            #就把backend,record写入到新的ha配置文件中
                            for new_list in record_list:
                                new.write(" " * 8 + new_list + "
    ")
                  continue
    #循环把record_list中的值写入到新的ha配置文件中 if flag and line.strip().startswith("backend"): flag = False #这里是找到了第二个backend,record行; # new.write(line) # continue if line.strip() and not flag: new.write(line) #如果不是空行,并且flag是False,就把内容写入到新ha文件中 #flag是False,说明内容就是buy.oldboy.org块以外的内容 ''' 调用函数方法-: bk = "buy.oldboy.org" rd = "server 100.1.7.90 100.1.7.90 weight 20 maxconn 30000" add(bk,rd) ''' #调用函数方法二: import json r = input("input dic:") dic = json.loads(r) bk = dic['backend'] rd = "server %s %s weight %d maxconn %d"%(dic['record']['server'], dic['record']['server'], dic['record']['weight'], dic['record']['maxconn']) #print(bk) #print(rd) add(bk,rd) #传入的字典类型的字符串格式: #{"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}


    ha.conf配置文件:

    global
            log 127.0.0.1 local2
            daemon
            maxconn 256
            log 127.0.0.1 local2 info
    defaults
            log global
            mode http
            timeout connect 5000ms
            timeout client 50000ms
            timeout server 50000ms
            option  dontlognull
    
    listen stats :8888
            stats enable
            stats uri       /admin
            stats auth      admin:1234
    
    frontend oldboy.org
            bind 0.0.0.0:80
            option httplog
            option httpclose
            option  forwardfor
            log global
            acl www hdr_reg(host) -i www.oldboy.org
            use_backend www.oldboy.org if www
    
    backend www.oldboy.org
            server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
            
    backend buy.oldboy.org
            server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000 

    流程图:

  • 相关阅读:
    ajax 笔记
    EM Algorithm
    Support Vector Machine
    Factor Analysis
    Local weighted regression
    一点突发奇想
    纳什均衡
    自驾崇明东滩湿地
    程序员热力学第二定律
    SQL Server Identity 属性的问题
  • 原文地址:https://www.cnblogs.com/tangshengwei/p/5655907.html
Copyright © 2020-2023  润新知