您的位置:首页 > 其它

Day3作业:ha_proxy配置文件修改

2016-05-23 23:33 351 查看
不废话,上代码

readme:

# Auther:ccorz Mail:ccniubi@163.com Blog:http://www.cnblogs.com/ccorz/
# GitHub:https://github.com/ccorzorz

ha_proxy配置文件修改程序
1.查询时输入域名即可查询,显示域名相关的backend配置
2.删除时输入域名,即可删除包括域名以及配置服务器信息的相关内容;如相关域名信息,会提示用户,不改动文件
3.修改时需要输入列表信息,列表中需要包括backend的域名信息,以及包含weight、server、maxconn的record列表
3.1 修改需输入内容举例:{"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}
3.2 程序会自动判断输入的格式是否正确,如果不正确,会提醒用户重新输入,直至正确格式
3.3 程序会自动判断域名信息是否存在,如存在,增加服务器信息;如不存在,追加至配置文件结尾
3.4 程序会自动判断用户想增加的服务器信息是否与已存在的配置重叠,如存在,提示用户,不修改文件;如不存在,在域名相关信息后追加
4.程序会自动备份修改之前的文件,后缀为修改时间
5.本程序有日志记录,以便管理员查询修改记录


流程图:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

def fetch(backend):
# backend = "www.oldboy.org"
result = []
with open('ha.conf', 'r', encoding='utf-8') as f:
flag = False
for line in f:
if line.strip().startswith("backend") and line.strip() == "backend " + backend:
flag = True
continue
if flag and line.strip().startswith("backend"):
flag = False
break
if flag and line.strip():
result.append(line.strip())

return result

# ret = fetch("www.oldboy.org")
# print(ret)

def add(backend, record):
# 思路一:
# 思路二:
# 先检查记录存不存
record_list = fetch(backend)
if not record_list:
# backend不存在
with open('ha.conf', 'r') as old, open("new.conf", 'w') as new:
for line in old:
new.write(line)
new.write("\nbackend " + backend + "\n")
new.write(" " * 8 + record + "\n")
else:
# backend存在
if record in record_list:
# record已经存在
# import shutil
# shutil.copy("ha.conf", 'new.conf')
pass
else:
# backend存在,record不存在
record_list.append(record)
with open('ha.conf', 'r') as old, open('new.conf', 'w') as new:
flag = False
for line in old:
if line.strip().startswith("backend") and line.strip() == "backend " + backend:
flag = True
new.write(line)
for new_line in record_list:
new.write(" "*8 + new_line + "\n" )
continue
if flag and line.strip().startswith("backend"):
flag = False
new.write(line)
continue
if line.strip() and not flag:
new.write(line)

bk = "www.oldboy.org"
rd = "server 100.1.7.49 100.1.7.49 weight 20 maxconn 30"
add(bk, rd)
# s = "[11,22,33,44,5, 66]"
# s = '{"k1":"v1"}'
# print(type(s),s)
#
# import json
# n = json.loads(s) # 将一个字符串,转换成python的基本数据类型; 注意:字符串形式的字典'{"k1":"v1"}'内部的字符串必须是 双引号
# print(type(n), n)
# import json
# r = input("input:")
# dic = json.loads(r)
# bk = dic['backend']
# rd = "server %s %s weight %d maxconn %d" %(dic['record']['server'],
#                                            dic['record']['server'],
#                                            dic['record']['weight'],
#                                            dic['record']['maxconn'])


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: