文件操作练习:http://www.cnblogs.com/wupeiqi/articles/4950799.html
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 dontlognulllisten stats :8888
stats enable
stats uri /admin
stats auth admin:1234frontend oldboy.org
bind 0.0.0.0:80
option httplog
option httpclose
option forwardfor
log global
acl www hdr_reg(host) -i www.oldboy.org
use_backend www.oldboy.org if wwwbackend www.oldboy.org
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000backend buy.oldboy.org
server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
复制代码
要求:
输出:
1、获取ha记录
2、增加ha记录
3、删除ha记录num = raw_input('请输入操作序号:')如果用户输入的 1:
read = raw_input('请输入backend:') 如输入:www.oldboy.org
讲配置文件 backend www.oldboy.org 节点下的所有记录获取到,并输入到终端如果用户输入的 2:
read = raw_input('请输入要新加的记录:') 如: {"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}
# 讲read字符串转换成 字典类型
read_dict = json.loads(read) backend_title = read_dict['backend']
# 去配置文件中找到指定的节点:
# backend test.oldboy.org
# 如果已经存在,
# 则在此节点下添加根据用输入构造出的记录,例如:
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
# 如果不存在,
# 则添加backend节点和记录,例如:
backend test.oldboy.org
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000 # (可选)可以再对节点下记录进行判断是否已经存在如果用户输入的 3:
read = raw_input('请输入要删除的记录:') 如: {"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}
# 讲read字符串转换成 字典类型
read_dict = json.loads(read)
backend_title = read_dict['backend']
#去配置文件中找到指定的节点,并在删除指定记录,如:
backend test.oldboy.org
server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000 # 删除掉 # (可选)如果backend下所有的记录都已经被删除,那么将当前 backend test.oldboy.org 也删除掉。
参考思路:
http://www.cnblogs.com/wupeiqi/articles/5539371.html
#一行一行读
f=open(xxx)
for line in f:
print(line)def fetch(backend):
result=[]
with open("ha.conf",'r',encoding="utf-8") as f:
flag = False
for line in f:
if line.strip().startwith("backend") and line.strip() == "backend "+backend
flag = True
continue
if flag==True and line.strip().startwith("backend"):
flag=False
break
if flag and line.strip():
result.append(line.strip())
return result 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("backend "+backend +"\n")
new.write(" " * 8 + record + "\n")
else:
#backend存在
#如果记录存在,不用做任何操作,如果不存在,则将记录添加到backend下
if record in record_list:
#记录存在
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().startwith("backend") and line.strip() == "backend "+backend:
flag = True
new.write(line)
for new_line in record_list:
new.write(" "*8 + new_line + "\n")
if flag and line.strip().startwith("backend")
flag = False
new.write(line)
continue
if line.strip() and not flag:
new.write(line)bk= 'test.oldboy.org'
rd="server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000"
add(bk,rd)
#思路二:s="[11,22,33,44,55]" #字典的表示法为s = '{"k1":"v1"}',里面元素如果是字符串的话一定要用双引号
print(type(s),s)
import json
n = json.loads(s) #将一个字符串转换为python的数据类型,[],{}
print(type(n),n)import json
r = input("input:")
dic=json.loads(r)
bk=dic['beckend']
rd = "server %s %s weight %d maxconn %d" %(dic['record'][server],
dic['record'][server],dic['record']['weight'],dic['record']['maxconn'])