第三周作业HAproxy文件操作

代码语言: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