ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

修改haproxy配置文件

2019-06-29 13:38:48  阅读:276  来源: 互联网

标签:haproxy website 配置文件 title 修改 line record backend


 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,website,配置文件,title,修改,line,record,backend
来源: https://www.cnblogs.com/desire-desire/p/11106387.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有