haproxy配置文件简单管理

版本:python3
功能:对haproxy配置文件进行简单的查询、添加以及删除功能
操作流程:
1.根据提示选择相应的选项
2.进入所选项后,根据提示写入相应的参数
3.查询功能会返回查询结果,添加、删除以及回退功能无回显

流程图:

 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.oldboy.org
29         server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
30
31 backend buy.oldboy.org
32         server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
33
34 backend nb.oldboy.org
35         server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
36
37 backend ttt.oldboy.org
38         server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
39
40 backend www.oldboy.com
41 server  192.168.1.1 192.168.1.1 weight 30 maxcoon 3000

haproxy配置示例文件

  1 import os
  2 import os.path
  3 import time
  4 def query(back_name):#定义查询函数
  5     flage=False    #[通过用户给定的backend,找到backend所在行,在寻找下一个以backend开头的行,将两个backend中间的内容添加进列表中]
  6     query_list=[]
  7     with open(‘ha‘,‘r‘) as ha:  #打开配置文件
  8         for line in ha:          #获取配置文件的内容
  9             if line.strip()==‘backend %s‘%(back_name): #获取要查询的backend所在行的内容
 10                 flage=True#善用标志位
 11                 continue
 12             if line.strip().startswith(‘backend‘):#判断是否行开头为backend
 13                 flage=False
 14             if flage and line.strip(): #判断flage是否为真
 15                 query_list.append(line.strip())#将符合的内容添加单独进列表中
 16     return query_list
 17
 18
 19
 20
 21 def add_backend(back_name,ip,weight,maxcoon):#定义添加函数
 22     current_title=‘backend %s‘%back_name  #获得用户输入backend所在行内容
 23     current_record=‘server  %s %s weight %s maxcoon %s‘%(ip,ip,weight,maxcoon)  #获得用户所要添加的server
 24     fetch_list=query(back_name)     #获取指定的backend下的记录
 25     if fetch_list:  #如果添加的backend存在
 26         if current_record in fetch_list: #如果添加的子项存在backend中,则不进行操作
 27             pass      # ‘‘‘【主要思路:通过判断,将需要添加的backend下的内容和原来已经存在的内容存入一个列表,将需要添加的
 28                       # backend之前的内容写入新文件,再将backend和存入列表中需要添加的sever写入,最后添加其余内容】‘‘‘
 29         else:
 30             fetch_list.append(current_record)#如果不存在backend中,添加进指定的backend中
 31         flage=False  #定义标示位,用于判断前后backend之间需要写入的内容
 32         has_write=False##定义标示位,用于判断需要添加的内容是否已存在
 33         with open(‘ha‘,‘r‘) as ha,open(‘ha.new‘,‘w‘) as new_ha:  #打开ha配置文件,创建一个新的文件
 34             for line in ha: #迭代配置文件
 35                 if line.strip() == current_title: #判断文件中是否有用户输入的backend
 36                     flage=True
 37                     new_ha.write(line)#把backend写入到新配置文件内
 38                     continue
 39                 if flage and line.strip().startswith(‘backend‘):
 40                     flage=False
 41                 if flage :
 42                     if not has_write: #通过标示位判断
 43                         for line in fetch_list:#获得需要添加的backend下的所以server
 44                             temp="%s%s\n" %(" "*8,line)
 45                             new_ha.write(temp) #写入新的文件中
 46                             has_write = True
 47                 else:
 48                     new_ha.write(line)#将其余内容写入到新的文件中
 49     else:#如果用户输入的backend不存在配置文件中
 50         with open(‘ha‘,‘r‘) as ha,open(‘ha.new‘,‘w‘) as new_ha:
 51             for line in ha:
 52                 new_ha.write(line)#将配置文件的所以内容写入新的文件中
 53             new_ha.write(‘\n‘+current_title)#将用户输入的backend写入新的文件中
 54             tem=‘‘*8+current_record+‘\n‘
 55             new_ha.write(‘\n‘+tem)#将用户输入的sever写入文件中
 56     os.rename(‘ha‘,‘ha_bak‘)
 57     os.rename(‘ha.new‘,‘ha‘)
 58
 59 def quit_time():#查询完成后退出
 60     for i in [3,2,1]:
 61         print(‘\033[32;1m查询完毕,正在返回主菜单.....\033[1m‘,i)
 62         time.sleep(1)
 63
 64 def del_backend(back_name,ip,weight,maxcoon):  #与添加类似,通过将需要的server存入一个列表中,最后将其余内容和列表中的内容写入新的文件中
 65     current_title=‘backend %s‘%back_name     #通过文件重命名的方式实现功能
 66     current_record=‘server  %s %s weight %s maxcoon %s‘%(ip,ip,weight,maxcoon)
 67     fetch_list=query(back_name)     #获取指定的backend下的记录
 68     if fetch_list:  #如果添加的backend存在
 69         if current_record in fetch_list: #如果添加的子项存在backend中
 70                 fetch_list.remove(current_record)
 71         else:
 72             pass
 73         flage=False
 74         has_write=False
 75         with open(‘ha‘,‘r‘) as ha,open(‘ha.new‘,‘w‘) as new_ha:
 76             for line in ha:
 77                 if line.strip() == current_title:
 78                     flage=True
 79                     new_ha.write(line)#把backend写入到新配置文件内
 80                     continue
 81                 if flage and line.strip().startswith(‘backend‘):
 82                     flage=False
 83
 84                 if flage :
 85                     if not has_write:
 86                         for line in fetch_list:
 87                             temp="%s%s\n" %(" "*8,line)
 88                             new_ha.write(temp)
 89                             has_write = True
 90                 else:
 91                     new_ha.write(line)
 92     else:
 93         with open(‘ha‘,‘r‘) as ha,open(‘ha.new‘,‘w‘) as new_ha:
 94             for line in ha:
 95                 new_ha.write(line)
 96             new_ha.write(‘\n‘+current_title)
 97             tem=‘‘*8+current_record+‘\n‘
 98             new_ha.write(‘\n‘+tem)
 99     if os.path.isfile(‘ha_bak‘): #文件重命名需要判断文件是否存在,当第一次时,备份文件不存在会报错
100         os.remove(‘ha_bak‘)
101     os.rename(‘ha‘,‘ha_bak‘)
102     os.rename(‘ha.new‘,‘ha‘)
103
104 def fallback(): #回退代码,将备份文件和当前配置文件重命名的方式实现功能
105     os.rename(‘ha‘,‘ha_new‘)
106     os.rename(‘ha_bak‘,‘ha‘)
107
108
109 while True:
110     print(‘\033[34;1m#######################################   \033[1m‘) #打印选项
111     user_enter=input(‘‘‘\033[32;1m 1.查询后端backend
112  2.添加后端backend
113  3.删除后端backend
114  4.回滚至前一版本
115  5.退出\033[1m
116  请输入你要选择的操作:‘‘‘ )
117     if user_enter ==‘1‘:
118         back_name=input(‘\033[32;1m请输入需要查询的backend名称,example:www.oldboy.org:\033[1m‘)
119         result=query(back_name)  #调用查询函数
120         if result:
121             print(‘\033[33;1m查询结果如下:\033[1m‘)
122             for i in result:
123                 print(i)
124             quit_time()
125             continue
126         else:
127             print(‘\033[34;1m查询错误,backend不存在,结果为空!\033[1m‘)
128     elif user_enter==‘2‘:
129          back_name=input(‘\033[32;1m请输入需要查询的backend名称,example:www.oldboy.org:\033[1m‘)
130          ip=input(‘\033[33;1m请输入要添加的serverIP地址,example192.168.1.1:\033[1m‘)
131          weight=input(‘\033[34;1m请输入该server的weight:\033[1m‘)
132          maxcoon=input(‘\033[35;1m请输入该server的maxcoon:\033[1m‘)
133          add_backend(back_name,ip,weight,maxcoon)
134          print(‘添加完成‘)
135          quit_time()
136     elif user_enter==‘3‘:
137          back_name=input(‘\033[32;1m请输入需要删除的backend名称,example:www.oldboy.org:\033[1m‘)
138          ip=input(‘\033[33;1m请输入要添加的serverIP地址,example192.168.1.1:\033[1m‘)
139          weight=input(‘\033[34;1m请输入该server的weight:\033[1m‘)
140          maxcoon=input(‘\033[35;1m请输入该server的maxcoon:\033[1m‘)
141          del_backend(back_name,ip,weight,maxcoon)
142          print(‘删除完成‘)
143          quit_time()
144     elif user_enter==‘4‘:
145          try:
146            fallback()
147          except FileNotFoundError: #回退时,备份文件不存在报错
148              print(‘\033[31;1m回退失败,当前为最新版本,无法回退!\033[1m‘)
149          except FileExistsError:#用户重复回退
150              print(‘已经是最新版本‘)
151              quit_time()
152     elif user_enter==‘5‘:
153           quit_time()
154           break
155     else:#非法输入时
156         print(‘\033[31;1m您输入的选项错误,请重新选择!\033[1m‘)

程序代码

时间: 2024-10-09 21:00:21

haproxy配置文件简单管理的相关文章

Service系统服务(一):安装一个KVM服务器、KVM平台构建及简单管理、virsh基本管理操作、xml配置文件的应用、为虚拟机制作快照备份、快建新虚拟机

一.安装一个KVM服务器 目标: 本例要求准备一台 RHEL7.2 服务器,将其搭建为KVM平台,主要完成下列操作: 1> 关闭本机的SELinux保护.防火墙服务   2> 挂载RHEL7光盘到 /mnt/dvd,将其配置为本机YUM源(baseurl = file:///mnt/dvd)   3> 安装KVM相关包组,确保已启用 libvirtd 服务 方案: RHEL7中的虚拟化服务软件组: 1> 虚拟化平台 -- "Virtualization Platform&

haproxy配置文件解释

haproxy配置文件各项解释 ####################全局配置信息######################## #######参数是进程级的,通常和操作系统(OS)相关######### global log 127.0.0.1 local0 info      #日志格式 chroot /var/haproxy              #chroot运行的路径 group haproxy                   #所属运行的用户 user haproxy  

初学 python 之 HAproxy配置文件操作

HAproxy配置文件操作: 1. 根据用户输入输出对应的backend下的server信息 2. 可添加backend 和sever信息 3. 可修改backend 和sever信息 4. 可删除backend 和sever信息 5. 操作配置文件前进行备份 6 添加server信息时,如果ip已经存在则修改;如果backend不存在则创建:若信息与已有信息重复则不操作 配置文件 参考 http://www.cnblogs.com/alex3714/articles/5717620.html

修改haproxy配置文件

HAproxy配置文件操作: 1. 根据用户输入输出对应的backend下的server信息 2. 可添加backend 和sever信息,如果存在则不添加,不修改 4. 可删除backend 和sever信息 5. 首先选择要进入哪种模式(查询,增加,删除),按q退出整个操作,在某种模式内时按b退出重新选择,不退出则 一直处于某种模式内 #Auther:He Jianhan #查def hanshu(names,fliens): print(fliens[names].rstrip()) if

作业:老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改

1 # 老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改 2 #分析:对文件进行增删改,首先需要找到需要修改文件的位置,即必须先把文件读取出来,找到对应 3 #位置,进行内容的修改,增加和删除: 4 import json,os #json模块用于将用户输入的字符串转换为字典 5 6 #首先定义fetch函数,同时传入指定参数backend,用来将修改的地方找出来 7 def fetch(backend): 8 flag=False #定义fl

BASH 创建一个命令 f1 使之可以简单管理文件版本

创建命令f1 创建一个shell脚本 f1,放到 $PATH 可以找到的位置: f1用法 1. 创建一个文件 foo.txt,并 backup 它 $ cat foo.txt 1 $ f1 backup foo.txt 2. 修改它 $ cat foo.txt 2 3. 还原到上一个版本 $ f1 rollback foo.txt $ cat foo.txt 1 BASH 创建一个命令 f1 使之可以简单管理文件版本,布布扣,bubuko.com

使用python更新haproxy配置文件

老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改,不再是以往的打开文件进行直接操作了. 现有ha配置文件如下: 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 50000m

python之haproxy配置文件操作(第三天)

作业: 对haproxy配置文件进行操作 要求: 对haproxy配置文件中backend下的server实现增删改查的功能 一.这个程序有二个版本 1. python2.7版本见haproxy_python27.py 2. python3.4版本见haproxy_python34.py 二.具体实现了如下功能: 1.输入1,进入backend菜单,查询server信息 2.输入2,进入backend菜单,添加server条目 3.输入3,进入backend菜单,选择server条目,进入修改环

Python3.5 day3作业二:修改haproxy配置文件。

需求: 1.使python具体增删查的功能. haproxy的配置文件. global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defaults log global mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms option dontlognull listen stats :8888 sta