需求:
當用戶輸入域名的時候,顯示出來下面的記錄
當用戶需要輸入添加紀錄的時候,添加到你需要的那個域名下面

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 dontlognull listen stats :8888 stats enable stats uri /admin stats auth admin:1234 frontend 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 www backend www.oldboy.org server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000 server 100.1.7.92 100.1.7.93 weight 20 maxconn 3000 server 100.1.7.94 100.1.7.93 weight 20 maxconn 3000 backend buy.oldboy.org server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
1 # !/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 def select(arg): 5 """ 6 要求用戶輸入域名,可以查看webserver的子作用域 7 針對haproxy的配置文件 8 思路: 9 a.逐行讀取文件 10 b.當我遇到backend + 域名的行的時候,將其子作用域放到一個空列表顯示給用戶看 11 c.再當我遇到以backend開頭的時候就結束循環就ok了 12 d.因為這個子作用域是需要顯示 的,就要拿出來,所以要特別顯示出來,要與眾不同,所以我們在這里定義標志位來顯示這個與眾不同 13 :param arg: 14 :return: 15 """ 16 result = [] 17 flag = False 18 with open("haproxy.txt", "r", encoding="utf-8") as f: 19 for line in f : 20 if line.strip() == "backend %s" % arg: 21 flag = True 22 continue 23 if line.strip().startswith("backend"): 24 flag = False 25 if flag: 26 result.append(line) 27 return result 28 ret = select("www.oldboy.org") 29 30 for i in ret : 31 print(i) 32 #++++++++++++++++++++++++++++ 33 def sele_add(yuming, record): 34 """ 35 增加: 36 a.先查看有沒有這個域名,如果沒有在最后添加就可以了 37 b.如果有,在檢測有沒有要和你相同的那個子作用域, 38 c.如果有,則pass,如果沒有就在最后一行添加 39 40 方法一: 41 a.查詢webserver域名是用戶要的那個域名 42 b.把查詢到的結果添加新紀錄寫入到新的文件中 43 c.在繼續把除了這個域名意外的作用域及其他內容寫入到新文件中 44 方法二: 45 a.就是在下一個新的域名之前加入用戶需要加入的新紀錄 46 #也可以理解為先插入那行在寫backend 47 b.在排除是否已經存在 48 c.當偽代碼已經寫完的時候,肯定不能實現,所以我們得要修改代碼,那么就需要用到標志位 因為只在當前域名后第一個backend 49 前添加紀錄,所以標志位在標記的時候需要 更改為數字 50 :param arg: 51 :return: 52 """ 53 54 """ 55 biaozhiwei = False 56 with open("haproxy.txt", "r", encoding="utf-8") as old, open("haproxy2.txt", "w", encoding="utf-8") as new: 57 res_list = select(yuming) 58 res_list.append(" "*8 + record + "\n") 59 for line in old: 60 if line.strip() == "backend %s" % yuming: 61 biaozhiwei = True#注意 62 new.write(line) 63 for i in res_list: 64 new.write(i ) 65 66 continue 67 if line.strip().startswith("backend"): 68 biaozhiwei = False 69 if not biaozhiwei: 70 new.write(line) 71 """ 72 #No.2 73 # 方法二: 74 # a.就是在下一個新的域名之前加入用戶需要加入的新紀錄 75 #也可以理解為先插入那行在寫backend 76 # b.在排除是否已經存在 77 #---------------- 78 #判斷域名是否存在,如果存在再次判斷記錄是否存在,如果存在,就pass,如果不存在就添加 79 bzw = 2 80 result = [] 81 a = 0 82 with open ("haproxy.txt", "r", encoding="utf-8") as old , open("haproxy2.txt", "w", encoding="utf-8") as new: 83 if ("backend %s" % yuming ) in old: 84 print("cunz") 85 86 for line in old: 87 88 if line.strip() == "backend %s" % yuming: 89 bzw = 0 90 result.append(line) 91 new.write(line) 92 continue 93 if line.strip().startswith("backend"): 94 bzw += 1 #因為我們會遇到很多個backend,所以就自加1 了 95 if bzw == 1: 96 if (" "*8 + record + "\n") in result: 97 pass 98 else: 99 new.write(" "*8 + record + "\n") 100 new.write(line) 101 else: 102 print("bucz") 103 with open("haproxy.txt", "r", encoding="utf-8") as old, open("haproxy2.txt", "w", encoding="utf-8") as new: 104 for line in old: 105 new.write(line) 106 new.write("\nbackend %s\n" % yuming) 107 new.write(" "*8 + record + "\n") 108 109 sele_add("www.oldboy.orgt","1233446")