代码语言:javascript
复制
1 #coding:utf-8
2 #Author:Mr Zhi
3 """
4 HAproxy配置文件操作:
5
6 1. 根据用户输入输出对应的backend下的server信息
7
8 2. 可添加backend 和sever信息
9
10 3. 可修改backend 和sever信息
11
12 4. 可删除backend 和sever信息
13
14 5. 操作配置文件前进行备份
15
16 6 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建;若信息与已有信息重复则不操作
17
18 配置文件 参考 http://www.cnblogs.com/alex3714/articles/5717620.html
19 """
20 import shutil
21 def Menu(): #定于关于菜单函数
22 menu = (
23 """\033[35;1m
24 1.增加
25 2.删除
26 3.修改
27 4.查询
28 \033[0m""")
29 print(menu.strip('\n'))
30
31 def Backup_proxy(): #定于关于备份文件的函数
32 shutil.copyfile("HAproxy.conf","HAproxy.conf.bak")
33
34 def Add_haproxy(): #定义关于增加加数据的函数
35 domain = input('输入你要添加的域名:')
36 domain_ip = input("输入你要添加的ip:")
37 domain_weight = input("输入weight值:")
38 domain_maxconn = input("输入maxconn值:")
39 Backup_proxy() # 写入数据前执行备份文件的函数
40 with open("HAproxy.conf","a+",encoding="utf-8") as f: #打开文件追加模式
41 f_w = "backend %s\n\t\t server %s %s weight %s maxconn %s" % (domain,domain_ip,domain_ip,domain_weight,domain_maxconn)
42 f.write('\n' + f_w), f.flush() ##把数据写入文件
43 print("\033[36;1m添加成功!\033[0m")
44
45 def Alter_haproxy(): #定义关于修改数据的函数
46 domain_old1 = input("输入你要修改的域名:")
47 print(type(domain_old1))
48 domain_new1 = input("输入新域名:")
49 ip_new1 = input("输入修改后的ip:")
50 weight_new1 = input("输入修改后的weight值:")
51 maxconn_new1 = input("输入修改后的maxconn值:")
52 with open("HAproxy.conf", "r", encoding="utf-8") as f:
53 lines = f.readlines()
54 num = lines.index("backend %s\n" %domain_old1) #赋值域名对应的列表索引号
55 lines[num] = "backend %s\n" %domain_new1 #根据索引号修改对应的backend
56 lines[num + 1] = "\t\tserver %s %s weight %s maxconn %s\n" % (ip_new1,ip_new1,weight_new1,maxconn_new1) #根据索引号修改对应的server
57 Backup_proxy() # 写入数据前执行备份文件的函数
58 with open("HAproxy.conf", "w", encoding="utf-8") as f_w:
59 for line in lines:
60 f_w.write(line) #把修改后的列表写入文件中
61 print("\033[32;1m修改成功!\033[0m")
62
63 def Search_haproxy(): #定义关于查看数据的函数
64 domain= input("输入你要查看的域名:")
65 with open("HAproxy.conf", "r", encoding="utf-8") as f:
66 lines = f.readlines()
67 num = lines.index("backend %s\n" %domain) #赋值域名对应的列表索引号
68 lines[num] = "backend %s\n" %domain #根据索引号修改对应的backend
69 print(lines[num],lines[num + 1])
70
71 def Delete_haproxy(): #定义关于删除数据的函数
72 domain = input("输入你要删除的域名节点:")
73 with open("HAproxy.conf", "r", encoding="utf-8") as f:
74 lines = f.readlines()
75 num = lines.index("backend %s\n" %domain) #赋值域名对应的列表索引号
76 lines.pop(num)
77 lines.pop(num) #这里不用num + 1,因为上面已经删除了一个索引号
78 Backup_proxy() # 写入数据前执行备份文件的函数
79 with open("HAproxy.conf", "w", encoding="utf-8") as f_w: #打开文件
80 for line in lines:
81 f_w.write(line)
82 print("\033[37;1m删除成功!\033[0m")
83
84 while True:
85 Menu()
86 number = int(input("input number:"))
87 if number == 1:
88 Add_haproxy()
89 elif number == 2:
90 Delete_haproxy()
91 elif number == 3:
92 Alter_haproxy()
93 elif number == 4:
94 Search_haproxy()
95 else:
96 print("\033[31;1mInput is woring\033[0m")
97 continue