Python3.5 day3作业二:修改haproxy配置文件。

时间:2021-12-08 02:40:48

需求:

      1.使python具体增删查的功能。

haproxy的配置文件。

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

import  os,re,sys
from collections import defaultdict,OrderedDict
conf
= "haproxy.cfg"
conf_new
= "haproxy.cfg.new"
backend_list
= []
server_dict
= {}
show_dict
= {}
backend_name_dict
= {}
server_info
= []
server_flag
= False ###初始化server判断标志位###
with open(conf,'r') as ha: ###打开haproxy配置文件###
for line in ha:
line
= line.strip('\n')
if re.match('backend',line): ###匹配配置文件以backend开头的行###
backend_name = re.split('\s+',line)[1]
backend_list.append(backend_name)
server_info1
= []
server_flag
= True ###赋值标志位为真,用来与server关联###
elif server_flag and re.match('\s+server',line): ###匹配配置文件以server开头的行###
server_info = re.split('\s+',line)
server_info.remove(
'')
server_info1.append(server_info)
server_dict[
'server'] = server_info[1]
server_dict[
'weight'] = server_info[4]
server_dict[
'maxconn'] = server_info[5]
backend_name_dict[backend_name]
= "name"
backend_name_dict[backend_name]
= server_info1
else:
server_flag
= False

#循环
options_list = ["1.查询backend","2.删除backend","3.新增backend","5.退出"]
while True:
for i in options_list:
print(i)
find
= (input("\033[94m请选择操作条目序号:\033[0m"))
if find.isdigit():
find
= int((find))
#1是查询
if find == 1:
for i, ele in enumerate(backend_list):
print(i, ele)
find1
= input("请输入您要查询的backend的序号:")
find1
= int(find1)
for j in range(1):
print("==========%s============" %backend_list[find1])
for i in backend_name_dict[backend_list[find1]]:
print("server %s weigt %s maxconn %s" %(i[1],i[3],i[5]))
#2是删除
elif find == 2:
for i, ele in enumerate(backend_list):
print(i, ele)
find3
= int(input("请选择您要删除backend的序号:"))
server_show
= []
for i, ele in enumerate(backend_name_dict[backend_list[find3]]):
server_show.append(
"server %s weight %s maxconn %s" % (ele[1], ele[3], ele[5]))
print(i, "server %s weight %s maxconn %s" % (ele[1], ele[3], ele[5]))
server_show1
= str(server_show[0])
print(server_show1)
f
= open(conf, "r")
f1
= open(conf_new, "a+")
for i in f:
if server_show1 in i:
i
= i.replace(server_show1, "")
f1.write(i)
f1.flush()
f.close()
f1.close()
os.remove(conf)
os.rename(conf_new, conf)
backend_list1
= []
backend_list1.append(
"backend %s" %(backend_list[find3]))
backend_list2
= str(backend_list1[0])
f
= open(conf, "r")
f1
= open(conf_new, "a+")
for i in f:
if backend_list2 in i:
i
= i.replace(backend_list2, "")
f1.write(i)
f1.flush()
f.close()
f1.close()
os.remove(conf)
os.rename(conf_new, conf)
print("删除成功!!!")
#3是增加
elif find == 3:
arg
= []
backend_name1
= []
backend_list3
= []
input_back
= input("\033[94m请输入backend(www.orgboy.org):\033[0m")
arg.append(
"backend %s" %input_back)
input_server
= input("\033[94m请输入server(127.0.0.1):\033[0m")
input_weight
= input("\033[94m请输入weight(20):\033[0m")
# arg["weight"] = input_weight
input_maxconn = input("\033[94m请输入maxconn(3000):\033[0m")
arg.append(
" server %s weight %s maxconn %s" %(input_server,input_weight,input_maxconn))
backend_name1
= str(arg[0])
f
= open(conf, "a+")
f.write(
"%s \n" %backend_name1)
f.flush()
f.close()
backend_list3
= arg[1]
backend_list3
= str(backend_list3)
f
= open(conf, "a+")
f.write(
"%s \n" %backend_list3)
f.close()
print("添加成功!!!")
#5是退出
elif find == 5:
exit()
else:
print("\033[91m请输入正确的序号\033[0m")
continue