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("\n" * 2 + "backend " + backend + "\n")
            new.write(" " * 8 + record + "\n")
            #在文件最后追加写入想要写入的内容
    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 + "\n")
              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 

流程图:

posted @ 2016-07-09 15:04  唐胜伟  阅读(463)  评论(0编辑  收藏  举报