查询、添加、删除配置文件中的ip
查询
添加
将域名和ip分为三段,域名前、本域名、域名后,写到新配置文件中,
当检测新配置文件没错误时,备份配置文件,将新配置文件重命名为配置文件名,重启服务器
import shutil
def fetch(domain):
find_domain = "backend %s" % domain
is_find_domain = False
server_list = []
with open('haproxy.conf','r') as r:
for line in r:#前面排除错误的,最后是正确的
curr = line.strip()
#print curr
if curr == find_domain:
#print True
is_find_domain = True
elif is_find_domain and curr.startswith("backend"):
break
elif is_find_domain and curr:
server_list.append(curr)
return server_list
def add(domain,server):
server_list = fetch(domain)
print server_list
if not server_list:#如果列表为空,则添加至最后
write_domain = "\nbackend %s\n" % domain
write_server = "\t%s\n" % server
with open('haproxy.conf','a') as a:
a.write(write_domain)
a.write(write_server)
pass
elif server not in server_list:
server_list.append(server)
find_domain = "backend %s" % domain
is_find_domain = False
with open('haproxy.conf','r') as r,open('haproxy.conf-new','w') as w:
for line in r:
curr = line.strip()
# print curr
if curr == find_domain:#如果找到,则将该域名及其所属ip写入新配置文件
# print True
is_find_domain = True
w.write("%s\n" % find_domain)
for server_temp in server_list:
w.write("\t%s\n" % server_temp)
elif is_find_domain and curr.startswith("backend"):
is_find_domain = False
w.write(line)
elif curr not in server_list and curr:
w.write(line)
pass
#分三段,域名前、本域名、域名后
hosts = fetch('news.baidu.com')
print hosts
#备份配置文件
shutil.copy('haproxy.conf',"haproxy.conf.bak")
add('news.baidu.com','server 127.0.0.23')
#添加过后,若检查新配置语法正确,则将新配置文件中的内容写到配置文件中
shutil.copy('haproxy.conf-new',"haproxy.conf")
删除
函数
def addNum(a,b):
return a + b
print map(addNum,[1,2,3],[4,5,6])
def reduce1(a,b):
return a + b
print reduce(reduce1,[1,2,3],10)
def filter1(a):
if a:
return True
print filter(filter1,[4,5,0,[],'',6])
#斐波那契数列 0 1 1 2 3 5 求和大于1000时的位数
def feiboOne(num):
if num <= 1:
return num
else:
return feiboOne(num - 1) + feiboOne(num - 2)
def feibo_pos(all,sum=0,pos=-1):
while sum < all:
pos += 1
sum += feiboOne(pos)
#print pos
return pos
all = 100000
print feibo_pos(all)
模块
相关功能的代码集合
.py文件、文件夹__init__.py
os
sys
json、pickle
subprocess执行系统命令、checkoutoutput、popen
paramikoe
log日志模块很重要,记录操作状态,在线排查问题,日志要切割
推荐书籍:林达:近距离看美国