
1 global
2 log 127.0.0.1 local2
3 daemon
4 maxconn 256
5 log 127.0.0.1 local2 info
6 defaults
7 log global
8 mode http
9 timeout connect 5000ms
10 timeout client 50000ms
11 timeout server 50000ms
12 option dontlognull
13
14 listen stats :8888
15 stats enable
16 stats uri /admin
17 stats auth admin:1234
18
19 frontend oldboy.org
20 bind 0.0.0.0:80
21 option httplog
22 option httpclose
23 option forwardfor
24 log global
25 acl www hdr_reg(host) -i www.oldboy.org
26 use_backend www.oldboy.org if www
27
28 backend www.baidu.org
29 server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
haproxy配置文件

1 #!/usr/bin/env python
2 #=*- coding:UTF-8 -*-
3
4 #查找
5 def search(website ):
6 reault_list = []#存放查询结果
7 search_flag = False #定义查询结果标志
8
9 with open('haproxy','r',encoding= 'utf-8') as f:
10 for line in f:#if语句顺序进行,当前条件判断完,进入下一判断
11 if 'backend {}'.format(website) == line.strip():#找到backend www.oldboy.org 开始截取
12 search_flag = True
13 if line.strip().startswith('backend') and 'backend {}'.format(website) != line.strip() :#找到下一个 backend www.xxx.com部分结束,截取其中部分
14 search_flag = False
15 if search_flag:
16 reault_list.append(line .strip() )
17 print(reault_list )
18 f.close()
19 if reault_list == []:
20 print('对不起,您查询的网址不存在!')
21 else:
22 return reault_list
23
24 #增加
25 def add(website):
26 arg = eval(website) #将输入的字符串转变为字典
27 backend_title = 'backend {}'.format(arg['backend'])# 要插入backend的字段
28 record_title = arg['record']
29 context_record = 'server {0}{0} weight {1} maxconn {2}'. 30 format(record_title['server'],record_title['weight'],record_title['maxconn'] )
31 add_flag = True#设置新增标志位
32 with open('haproxy', 'r ', encoding='utf-8') as f:
33 for line in f:
34 if line.strip() == backend_title:
35 print("您新增的网址已经存在!")
36 add_flag = False
37 if add_flag:
38 f.write('\n{}'.format(backend_title))
39 f.write('\n\t\t{}'.format(context_record))
40 f.close()
41
42 #删除
43 def delete(website):
44 delete_flag = False #设置删除标志位
45 delete_result = True
46 with open('haproxy', 'r', encoding='utf-8') as f, 47 open('haproxy_bak', 'w') as f1:
48 for line in f:
49 if 'backend {}'.format(website ) == line.strip():
50 delete_flag = True
51 delete_result = False
52 continue
53 if line.strip().startswith('backend') and line.strip() != website:
54 delete_flag = False
55 if not delete_flag:
56 f1.write(line)
57 if delete_result :
58 print("您删除的网址不存在!")
59 with open('haproxy', 'w') as f, 60 open('haproxy_bak', 'r', encoding='utf-8') as f1:
61 for line in f1:
62 f.write(line)
63
64 #修改
65 def update(website):
66 arg = eval(website )
67 # print(arg)
68 backend_title = "backend {}".format(arg['backend']) # 要插入backend整个字段
69 # print(backend_title)
70 record_title = arg["record"]
71 context_record = "server {0} {0} weight {1} maxconn {2}". 72 format(record_title['server'], record_title['weight'], record_title['maxconn'])
73 # print(context_record)
74
75 update_flag = False #设置修改标志位
76 update_re = False #设置重复修改位
77
78 with open('haproxy', 'r', encoding='utf-8') as f, 79 open('haproxy_bak', 'w') as f1:
80 for line in f:
81 if line.strip() == backend_title:
82 update_flag = True
83 continue #如果出现修改backend_title,设置修改标志位为True。
84 if line.strip().startswith('backend') and line.strip() != backend_title :
85 update_flag = False #捕捉到下一个backend_title,设置修改标志位为False。
86 if not update_flag:
87 f1.write(line)
88 if update_flag and not update_re: #修改标志位为True,并且没有被修改过
89 f1.write('\n{}'.format(backend_title))
90 f1.write('\n\t\t{}\n'.format(context_record))
91 update_re = True
92
93 with open('haproxy', 'w') as f, 94 open('haproxy_bak', 'r', encoding='utf-8') as f1:
95 for line in f1:
96 f.write(line)
97
98
99
100
101 while True:
102 print('欢迎进入haproxy配置程序'.center(50,'-') )
103 print( '\n1 查询\n')
104 print(' 2 新增\n')
105 print(' 3 删除\n')
106 op_haproxy = input('选择要进入模式的ID-》:')
107 if op_haproxy == '1':
108 website = input('请输入要查询的网址:\n'
109 '例如www.oldboy.org')
110 search(website )
111 elif op_haproxy == '2':
112 website = input("请输入要新增的网址配置:"
113 "例如:{'backend': 'www.baidu.com','record': {'server': '100.1.7.8',"
114 "'weight': 20,'maxconn': 3000}}\n")
115 add(website)
116 elif op_haproxy == '3':
117 website = input("请输入要删除的网址配置:"
118 "例如:www.baidu.com\n")
119
120 delete(website)
121 elif op_haproxy == '4':
122 website = input("请输入要修改的网址配置:"
123 "例如:{'backend': 'www.baidu.com','record': {'server': '100.1.7.8',"
124 "'weight': 20,'maxconn': 3000}}\n")
125 update(website)
126 elif op_haproxy == 'q':
127 break
128 else:
129 print("请检查您的输入!")
View Code
来源:https://www./content-4-280351.html
|