python---haproxy---文件操作

haproxy 文件操作,操作属于简单操作,不复杂

 1 # -*- coding:utf-8 -*-
 2 # LC
 3 
 4 def search(*args):                              #查找Haproxy文件中的服务器
 5     list1 = []
 6     with open("haproxyfile","r") as f:
 7         flag = False
 8         for line in f:
 9             if line.strip() == "backend %s" % args:             #查找第一个以backend + 输入域名的起头的backend,将相关信息记录list中
10                 flag = True
11                 list1.append(line.strip())
12                 continue                                        #并继续循环,为了将backend下一行执行,即按着flag = True执行
13             if line.strip().startswith("backend") or line.strip() == "":              #查到第二个backend这将flag置于Fasle,如果是空行,也将flag置于Fasle中,(防止文章末尾有多个空行)
14                 flag = False
15             if flag:
16                 list1.append(line.strip())                  #将正确backend的后续信息继续记录至list中
17         return list1
18 
19 
20 def delete(string):
21     dict = eval(string)
22     backend = dict["backend"]
23     record = dict["record"]
24     new_file_list = []
25     if backend in domain_list():                        #判读要删除的域名是否在文件内
26         with open("haproxyfile","r",encoding="utf-8") as f_read:
27             for line in f_read:
28                 new_file_list.append(line)                          #读取文件的每行,将每行写入列表
29                 if line.strip() == "backend %s" %backend:           #如果有符合的backend,则将最近的写入列表弹出
30                     new_file_list.pop()
31                 if line.strip() == "server %s weight %s maxconn %s" %(record["server"],record["weight"],record["maxconn"]):#如果有符合的server信息,则将最近的写入列表弹出
32                     new_file_list.pop()
33         with open("haproxyfile1", "a") as f_write:              #将删除后的写入文件中
34             for line in new_file_list:
35                 f_write.write(line)
36     else:
37         print("The Domain not in this file!")
38 
39 def add(string):                                    #增加ha文件配置服务器信息
40     dict = eval(string)
41     backend = dict["backend"]
42     record = dict["record"]
43     with open("haproxyfile","a") as f_write:
44         f_write.write("backend %s\n"%backend)
45         f_write.write("\t\tserver %s %s weight %s maxconn %s"%(record["server"][0],record["server"][1],
46                                                             record["weight"],
47                                                             record["maxconn"]))
48 
49 
50 def domain_list():                #将文件中所有的domain都摘出来
51     backend_name = []
52     with open("haproxyfile","r") as f_read:
53         for line in f_read:
54             if line.startswith("backend"):
55                 domain_name = line.split()[1]
56                 backend_name.append(domain_name)
57     return backend_name
58 
59 #域名信息查找
60 domain_search_name = input("Please input the domain your search:")
61 if domain_search_name in domain_list():
62     domain_info = search(domain_search_name)
63     print(domain_info)
64 
65 #域名信息删除
66 
67 string = "{'backend': 'www.yst.com.cn','record':{'server':'1.1.1.1','weight': 30,'maxconn': 2300}}"
68 delete(string)
69 
70 #域名信息增加
71 string = "{'backend': 'www.yst.com.cn','record':{'server':'1.1.1.1','weight': 30,'maxconn': 2300}}"
72 add(string)

 

收集backend信息和对应server的信息
 1 def backend_info():
 2     with open("haproxyfile","r") as f_read:
 3         backend_list = []
 4         dict_all = {}
 5         dict_ser = {}
 6         server_list = []
 7         for line in f_read:
 8             if line.strip().startswith("backend"):
 9                 backend_name = line.split()[1]
10                 backend_list.append(backend_name)
11                 server_list = []
12             if line.strip().startswith("server"):
13                 dict_ser['server'] = line.strip().split()[1]
14                 dict_ser['weight'] = line.strip().split()[3]
15                 dict_ser['maxconn'] = line.strip().split()[5]
16                 server_list.append(dict_ser)
17                 dict_all[backend_name] = server_list
18     return backend_list,dict_all                #返回backend的所有域名信息和域名包含的服务器信息

 

 

posted on 2017-06-26 00:08  clv  阅读(220)  评论(0编辑  收藏  举报

导航