码迷,mamicode.com
首页 > 其他好文 > 详细

修改haproxy配置文件

时间:2019-06-29 14:59:20      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:输入   acl   对不起   contex   int   pcl   context   web   strip()   

技术图片
 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

 

修改haproxy配置文件

标签:输入   acl   对不起   contex   int   pcl   context   web   strip()   

原文地址:https://www.cnblogs.com/desire-desire/p/11106387.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!