![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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.oldboy1.org server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333 server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000 server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000 backend www.oldboy2.org server 3.3.3.3 3.3.3.3 weight 20 maxconn 3000 backend www.oldboy20.org server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
一:逐步进行操作:
1.查询功能:
当用户输入www.oldboy1.org用户信息后,打印对应的server信息:
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000
server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000
while 1: l=[] flag=1 m=input("please input your choise:").strip() with open("test",encoding="utf8") as f: for i in f: if i.startswith("backend") and m in i: flag=0 continue if i.startswith("backend") and flag==0: break if flag==0: l.append(i) for p in l: print(p.strip())
2.增加功能:
当用户输入{"backend":"www.oldboy20.org","record":{"server":1111,"weight":2222,"maxconn":3333}}
在www.oldboy20.org下增加一条server信息,即文件中:
backend www.oldboy20.org
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
server 11111 weight 2222 maxconn 3333
while 1: a=input("please input your choise:".strip()) dic=eval(a) b=dic["backend"] c=dic["record"] flag=1 l=[] s=" server %s weight %s maxconn %s " %(c["server"],c["weight"], c["maxconn"]) with open("haproxy.conf", encoding="utf-8") as f, open("test", "w", encoding="utf-8") as w: for line in f: w.write(line) if line.startswith("backend") and b in line: flag=0 continue if line.startswith("backend") and b not in line and flag==0: flag=1 continue if flag==0: l.append(s) for line1 in l: w.write(line1) import os os.rename("haproxy.conf","conf_bak") os.rename("test","haproxy.conf") os.remove("conf_bak")
3.删除功能
当用户输入{"backend":"www.oldboy20.org","record":{"server":1111,"weight":2222,"maxconn":3333}}
会将www.oldboy20.org下的server 11111 weight 2222 maxconn 3333删除,
在文件中如下:
backend www.oldboy20.org
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
while 1: a=input("please input your choise:".strip()) dic=eval(a) b=dic["backend"] c=dic["record"] flag=1 s=" server %s weight %s maxconn %s " %(c["server"],c["weight"], c["maxconn"]) with open("haproxy.conf", encoding="utf-8") as f, open("test", "w", encoding="utf-8") as w: for line in f: if line.startswith("backend") and b in line: flag=0 if line.strip()==s.strip() and flag==0: flag=1 continue w.write(line) import os os.rename("haproxy.conf","conf_bak") os.rename("test","haproxy.conf") os.remove("conf_bak")
4.修改功能:
当用户输入{"backend":"www.oldboy2.org","record":{"server":0000,"weight":0000,"maxconn":0000}}
在文件中如下:
backend www.oldboy2.org
server 0000 weight 0000 maxconn 0000
while 1: a=input("please input your choise:".strip()) dic=eval(a) b=dic["backend"] c=dic["record"] flag=1 s=" server %s weight %s maxconn %s " %(c["server"],c["weight"], c["maxconn"]) with open("haproxy.conf", encoding="utf-8") as f, open("test", "w", encoding="utf-8") as w: for line in f: if line.startswith("backend") and b in line: w.write(line) flag=0 continue if flag==0: flag=1 line=s w.write(line) import os os.rename("haproxy.conf","conf_bak") os.rename("test","haproxy.conf") os.remove("conf_bak")
二:合并成函数:
虽然功能可以简单的实现,不过感觉很烂。。。
def search(): l=[] flag=1 m=input("请输入您得查询内容:").strip() with open("haproxy.conf",encoding="utf8") as f: for i in f: if i.startswith("backend") and m in i: flag=0 continue if i.startswith("backend") and flag==0: break if flag==0: l.append(i) for p in l: print(p.strip()) def add(): a = input("请输入您要添加的内容:".strip()) dic = eval(a) b = dic["backend"] c = dic["record"] flag = 1 l = [] s = " server %s weight %s maxconn %s " % (c["server"], c["weight"], c["maxconn"]) with open("haproxy.conf", encoding="utf-8") as f, open("test", "w", encoding="utf-8") as w: for line in f: w.write(line) if line.startswith("backend") and b in line: flag = 0 continue if line.startswith("backend") and b not in line and flag == 0: flag = 1 continue if flag == 0: l.append(s) for line1 in l: w.write(line1) os.rename("haproxy.conf","conf_bak") os.rename("test","haproxy.conf") os.remove("conf_bak") print("添加成功!") def delete(): a=input("请输入您要删除的内容:".strip()) dic=eval(a) b=dic["backend"] c=dic["record"] flag=1 s=" server %s weight %s maxconn %s " %(c["server"],c["weight"], c["maxconn"]) with open("haproxy.conf", encoding="utf-8") as f, open("test", "w", encoding="utf-8") as w: for line in f: if line.startswith("backend") and b in line: flag=0 if line.strip()==s.strip() and flag==0: flag=1 continue w.write(line) import os os.rename("haproxy.conf","conf_bak") os.rename("test","haproxy.conf") os.remove("conf_bak") print("删除成功!") def change(): a=input("请输入您的新内容:".strip()) dic=eval(a) b=dic["backend"] c=dic["record"] flag=1 s=" server %s weight %s maxconn %s " %(c["server"],c["weight"], c["maxconn"]) with open("haproxy.conf", encoding="utf-8") as f, open("test", "w", encoding="utf-8") as w: for line in f: if line.startswith("backend") and b in line: w.write(line) flag=0 continue if flag==0: flag=1 line=s w.write(line) import os os.rename("haproxy.conf","conf_bak") os.rename("test","haproxy.conf") os.remove("conf_bak") print("修改成功!") def tell_msg(): msg=""" 1:查询 2:添加 3:删除 4:更改 """ print(msg) cmd_dic={ "查询":search, "添加":add, "删除":delete, "更改":change } import os while True: tell_msg() choice=input("请输入您得选择:".strip()) cmd_dic[choice]()