python模拟sed操作haproxy配置文件
来源:互联网 发布:手机淘宝的扫一扫在哪 编辑:程序博客网 时间:2024/06/07 05:21
#运行测试见末尾
#!/usr/bin/python# -*- coding utf8 -*-import osdef search(arg): '''查询backend后端的配置信息''' with open('haproxy.cfg',encoding='utf8',mode='r') as hacfg: bo = bool(False) back_info = '' for line in hacfg: if line.strip() == "backend %s" %(arg): #print(line) bo = not bo print(bo,line) continue if bo == True and (line.startswith('backend') or line.startswith('front') or line.startswith('listen')): break elif bo == True: back_info = back_info + str(line) #print(back_info) else: continue print(back_info) #passdef ins(arg): '''插入配置''' back_name = arg server_ip = input('Please input the backend IP address: ').strip() weight = input('Please input the weight num.: ').strip() max_con = input('Please input the max connect num.: ').strip() back_dic = { 'bakend':back_name, 'record':{ 'server':server_ip, 'weight':weight, 'maxcon':max_con, } } print(back_dic) target = '\n' + 'backend ' + back_dic['bakend'] + '\n' + '\t' ip_a = back_dic['record']['server'] weig = back_dic['record']['weight'] max_co = back_dic['record']['maxcon'] ser_info ='server ' + ip_a + ' ' + ip_a + ' weight ' + weig + ' maxconn ' + max_co target = target + ser_info print(target) with open('haproxy.cfg', encoding='utf8', mode='a') as hacfg: hacfg.write(target)def dele(arg): with open('haproxy.cfg',encoding='utf8',mode='r') as hacfg , open('haproxy.cfg.swap',mode='w') as hacfg.swap: bo = bool(False) back_info = '' for line in hacfg: if line.strip() == "backend %s" %(arg): #print(line) bo = not bo print(bo,line) continue if bo == True and (line.startswith('backend') or line.startswith('listen') or line.startswith('frontend')): bo = False if bo == False: hacfg.swap.write(line) os.remove('haproxy.cfg') os.rename('haproxy.cfg.swap','haproxy.cfg')#---------------------------------------------------------------------def search_front(arg): with open('haproxy.cfg', encoding='utf8', mode='r') as hacfg: bo = bool(False) front_info = '' for line in hacfg: if line.strip() == "frontend %s" %(arg): print(line) bo = not bo print(bo, line) continue if bo == True and (line.startswith('backend') or line.startswith('front') or line.startswith('listen')): break elif bo == True: front_info = front_info + str(line) # print(back_info) else: continue print(front_info)def search_listen(arg): with open('haproxy.cfg', encoding='utf8', mode='r') as hacfg: bo = bool(False) listen_info = '' for line in hacfg: if line.strip() == "listen %s" % (arg): # print(line) bo = not bo print(bo, line) continue if bo == True and (line.startswith('backend') or line.startswith('front') or line.startswith('listen')): break elif bo == True: listen_info = listen_info + str(line) else: continue print(listen_info)def search_all(arg): print('your input message is: ',arg) cfg = str(arg) cfg_ini = cfg.replace('backend','',1).replace('frontend','',1).replace('listen','',1) print('What you want to do: ',cfg_ini) if cfg.startswith('back'): search(cfg_ini) elif cfg.startswith('frontend'): search_front(cfg_ini) elif cfg.startswith('listen'): search_listen(cfg_ini)#passdef add_all(arg): cfg_info = str(arg) cfg_ini = cfg_info.replace('backend', '', 1).replace('frontend', '', 1).replace('listen', '', 1).strip() targt='' if cfg_info.startswith('listen'): listen_name = cfg_ini bind = input('Please input the bind IP address and port(for example 184.168.22.196:80): ').strip() ip_a = input('Please input the IP address and port(for example 10.2.3.5:80) : ').strip() weig = input('Please input the weight num.: ').strip() max_co = input('Please input the max connect num.: ').strip() target = '\n' + 'listen ' + listen_name + '\n' + '\t' bind_info = 'bind' + ' ' + bind + '\n' + '\t' ser_info = 'server ' + ip_a + ' ' + ip_a + ' weight ' + weig + ' maxconn ' + max_co target = target + bind_info + ser_info elif cfg_info.startswith('frontend'): listen_name = cfg_ini bind = input('Please input the bind IP address and port(for example 10.2.3.5:80): ').strip() acl = 'acl ' + 'acl_' + cfg_ini + ' hdr(host) -i ' + bind use_backend = 'host_' + cfg_ini + ' if ' + 'acl_' + cfg_ini target = '\n' + 'frontend ' + listen_name + '\n\t' target = target + 'bind' + '\t' + bind + '\n\t' + acl +'\n\t' +' use_backend ' + use_backend +'\n' print('your add config is: ',target) with open('haproxy.cfg', encoding='utf8', mode='a') as hacfg: hacfg.write(target)def del_all(arg): cfg_info = str(arg) cfg_ini = cfg_info.replace('backend', '', 1).replace('frontend', '', 1).replace('listen', '', 1).strip() with open('haproxy.cfg',encoding='utf8',mode='r') as hacfg , open('haproxy.cfg.swap',mode='w') as hacfg.swap: bo = bool(False) back_info = '' for line in hacfg: if line.strip() == "listen %s" %(cfg_ini) or line.strip() == "frontend %s"%(cfg_ini): bo = not bo print(bo,line) continue if bo == True and line.startswith('listen'): bo = not bo if bo == True and line.startswith('frontend'): bo = not bo if bo == False: hacfg.swap.write(line) os.remove('haproxy.cfg') os.rename('haproxy.cfg.swap','haproxy.cfg')if __name__ == '__main__': user_guide = ''' 1:search 2:add configuration 3: delete backend 4:exit program 5:extended function(search frontend & listen,for example: 'listen baidu.com' 'frontend sohu.com') 6:extended function(add frontend & listen,for example: 'listen baidu.com' 'frontend sohu.com') 7:extended function(delete frontend & listen,for example: 'listen baidu.com' 'frontend sohu.com') ... ... ''' menu={ 1:search, 2:ins, 3:dele, 5:search_all, 6:add_all, 7:del_all, } while True: print(user_guide) try: cho = int(input('Please input num.: ').strip()) except(ValueError,NameError): print('input error,Please choice 1 to 5') # except ValueError: # print('input error') # except NameError: # print('input error') #else: # print('Please choice 1 to 5') # finally: # print('Please choice 1 to 5',) cho = int(cho) if cho == 0 : continue elif cho == 4 : break elif cho in menu: data = str(input('Please input your domainname to operate: ').strip()) menu[cho](data) else: print('Please choice 1 to 5')
运行程序#搜索部分测试内容输入1 输入oldboy.com 查询backend的oldboy信息输入5 输入frontendog.com 查询frontend的og信息输入5 输入listenzq.com 查询listen区域的配置为zq.com的信息#插入部分测试内容输入2 输入oldboy1.com 插入默认区域(默认区域backend)输入6 输入frontendoldboy2.com 插入frontend区域输入6 输入listenoldboy3.com 插入listen区域#删除部分测试内容输入2 输入oldboy1.com 删除默认区域(默认区域backend)输入6 输入frontendoldboy2.com 删除frontend区域输入6 输入listenoldboy3.com 删除listen区域
阅读全文
0 0
- python模拟sed操作haproxy配置文件
- python 操作haproxy配置文件
- 函数模块-HAproxy配置文件操作
- 用python修改haproxy配置文件
- linux sed命令 + 高级SED 操作配置文件
- python操作haproxy.cfg文件
- python案例1---修改haproxy的配置文件
- haproxy.cfg 配置文件 python脚本管理
- HAProxy配置文件haproxy.cfg解释
- python操作配置文件
- python操作conf配置文件
- Python 操作配置文件
- python配置文件操作
- Python 配置文件的操作
- python操作cfg配置文件
- python ConfigParser操作配置文件
- python操作配置文件
- haproxy配置文件详解
- “玲珑杯”线上赛 Round #15 河南专场:E -- 咸鱼旅行
- 《我们仨》读感
- 如何设计短网址系统(TinyURL)
- STM32学习笔记(6): 启动代码(Startup Code)
- 问题 B: 情报传递
- python模拟sed操作haproxy配置文件
- Kotlin 资源大全 收集Kotlin有价值的资源
- 什么是数据库连接池?
- 数学等于号是=那三个横杠是什么符
- 免费的论文查重网站
- (转)WorldQuant :如何缔造量化金融王国
- j2ee规范-jndi-在Tomcat中配置数据源
- PAT 1027. Colors in Mars
- NYOJ 56 阶乘因式分解(一)