来为一个配置文件进行增删改查的基本操作
需求:
需求:
查询功能:
当用户输入www.ali.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
增加功能:
当用户输入{"backend":"www.ali.org","record":{"server":1111,"weight":2222,"maxconn":3333}}
在www.ali.org下增加一条server信息,即文件中:
backend www.ali.org
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
删除功能
当用户输入{"backend":"www.ali.org","record":{"server":1111,"weight":2222,"maxconn":3333}}
会将www.ali.org下的server 1111 weight 2222 maxconn 3333删除,
在文件中如下:
backend www.ali.org
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
修改功能:
当用户输入{"backend":"www.ali.org","record":{"server":0000,"weight":0000,"maxconn":0000}}
backend www.ali.org
server 0000 weight 0000 maxconn 0000
配置文件:
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.ali.org
use_backend www.ali.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
对文件对操作:
while True:
print("1:增加")
print("2:删除")
print("3:修改")
print("4:查看")
number=input("input your namber:").strip()
f_read=open("haproxy.conf",mode="r+", encoding="utf8")
f_d=open("haproxy_delete.conf",mode="w", encoding="utf8") #删除文件所操作的文件
f_a=open("haproxy_add.conf",mode="w", encoding="utf8") #增加文件所操作的文件
f_m=open("haproxy_modify.conf",mode="w", encoding="utf8") #修改文件所操作的文件
flag = False
add_flag = False
list = [] #查询放入的列表
d_list = [] #删除放入的列表
a_list=[]
m_list=[]
if number=='4':
print("look")
look_input=input(">>:").strip()
for line in f_read:
if line.startswith("backend") and look_input in line: # 1,信息匹配
flag = True
continue
if flag and line.startswith("backend"): # 3,结束
break
if flag:
list.append(line.strip()) # 2,增加信息
for i in list:
print(i)
elif number =='3':
print("modify")
mo_flag = False
mo_input = input(">>").strip()
print(mo_input)
mo_input = eval(mo_input)
print(mo_input)
str_mo = "server " + str(mo_input["record"]["server"]) + " weight " + str(
mo_input["record"]["weight"]) + " maxconn " + str(mo_input["record"]["maxconn"])
print(str_mo)
for line in f_read:
if line.startswith("backend") and str(mo_input["backend"]) in line:
m_list.append(line)
mo_flag = True
continue
elif mo_flag and line.startswith("backend"):
m_list.append(line)
mo_flag=False
elif mo_flag:
# print(mo_flag)
m_list.append("\t\t"+str_mo+"\n")
elif mo_flag and line.count('\n')==len(line):
continue
else:
m_list.append(line)
# print(m_list)
for i in m_list:
f_m.write(i)
f_m.close()
elif number == '2':
print("delete")
del_flag=False
del_input = input(">>").strip()
del_input = eval(del_input)
str_del = "server " + str(del_input["record"]["server"]) + " weight " + str(
del_input["record"]["weight"]) + " maxconn " + str(del_input["record"]["maxconn"])
print(str_del)
for line in f_read:
if str(del_input["backend"]) in line and line.startswith("backend"):
d_list.append(line)
del_flag=True
continue
elif del_flag and str_del in line:
continue
else:
d_list.append(line)
# print(d_list)
for i in d_list:
f_d.write(i)
f_d.close()
elif number == '1':
print("add")
add_input = input(">>").strip()
add_input = eval(add_input)
str_add = "\t\tserver " + str(add_input["record"]["server"]) + " weight " + str(
add_input["record"]["weight"]) + " maxconn " + str(add_input["record"]["maxconn"])+"\r\n"
# print(str_add)
for line in f_read:
if line.startswith("backend") and str(add_input["backend"]) in line:
add_flag = True
a_list.append(line)
# a_list.append("\n" + str_add) 在记录前插入
continue
elif add_flag:
print(add_flag)
a_list.append(line)
else:
a_list.append(line)
# a_list.append("\n" + str_add)
for i in a_list:
f_a.write(i)
f_a.close()
# {"backend": "www.ali.org", "record": {"server": 1111, "weight": 2222, "maxconn": 3333}}
# server 1111 weight 2222 maxconn 3333
# {"backend": "www.ali.org", "record": {"server": 0000, "weight": 0000, "maxconn": 0000}}
空行判断
with open("大宗师诗号" ,mode="r",encoding="utf8") as fr:
for line in fr:
print(line.count("\n"),len(line))