haproxy.conf文件操作(基于函数方式)
def frend_msg(): frendmsg_dict = {} prefix_opt = {"select":"查询","add":"添加","modify":"修改","delete":"删除"} frendmsg_dict["frend"] ="\033[33;1m亲!!你当前输入的域名不存在请重新输入哈 \033[0m" for i, v in enumerate(prefix_opt.items()): v_info = list(v) frendmsg_dict[v_info[0]] = "\033[33;1m亲!!恭喜您" + v_info[1] + "成功了\033[0m" # frendmsg_dict["modify"] = "\033[33;1m亲!!恭喜您修改成功了\033[0m" frendmsg_dict["sucess"] = "\033[33;1m亲!!恭喜您操作成功\033[0m" return frendmsg_dict def message(*args): ip_input = input("请输入ip").strip() weight_input = input("请输入权重").strip() max_conn_input = input("请输入最大连接:只能数字").strip() return "\t\tserver %s weight %s maxconn %s \n"\ %(ip_input,weight_input,max_conn_input) def select_file(file,info_input): with open(file,encoding="utf8") as f_read: flag = False file_lst = [] for line in f_read : if line.startswith("backend") and str(info_input) in line: flag = True continue elif line.startswith("backend") and flag: break; if flag: file_lst.append(line) f_read.close() return file_lst #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ def add_file(): print("add") info_input = input("请输入域名 ") with open(src_file, "r+", encoding="utf8") as f_read, open(dst_file, "w+", encoding="utf8") as f_write: flag = False file_lst = [] do_mess = message() for line in f_read: f_write.write(line) f_write.flush() if line.startswith("backend") and str(info_input) in line: file_lst.append(do_mess) f_write.write("\n".join(file_lst)) f_write.flush() print(frend_msg()["add"]) flag = True continue if flag: file_lst.append(line) savefile() #___________________________________________________________________ def modify_file(): print("modify") info_input = input("请输入域名 ") with open(src_file, "r+", encoding="utf8") as f_read, open(dst_file, "w", encoding="utf8") as f_write: flag = False do_mess = message() print("\033[33;1m亲!!请您按选项输入要修改的内容\033[0m") rep_change = message() for line in f_read: if line.startswith("backend") and str(info_input) in line.strip(): # print("----", line) f_write.write(line) flag = True continue if len(line) == line.count("\n"): if len(line) == 0: oldline = line.strip() newline = line.replace(oldline, rep_change.strip()) f_write.write(newline) continue if flag: if line.strip() == do_mess.strip(): oldline = line.strip() newline = line.replace(oldline,rep_change.strip()) f_write.write(newline) continue # file_lst.append(do_mess) # print("???",line) f_write.write(line) # print("fff", line) print(frend_msg()["modify"]) savefile() #_________________________________________________________________ def delete_file(): print("delete") info_input = input("请输入域名 ") with open(src_file, "r+", encoding="utf8") as f_read, open(dst_file, "w", encoding="utf8") as f_write: flag = False do_mess = message() for line in f_read: if line.startswith("backend") and str(info_input) in line.strip(): # print("----", line) f_write.write(line) flag = True continue if len(line) == line.count("\n"): continue if flag: if line.strip() == do_mess.strip(): continue f_write.write(line) # print("fff", line) print(frend_msg()["delete"]) savefile() ################################################################### def savefile(): from os import rename, remove remove(src_file) rename(dst_file, src_file) ans = input(">>>") #--------------------------------------------------------------------- #--------------------------------------------------------------------- src_file = "haproxy.conf" dst_file = "modify.conf" def main(): quary_flag = False while not quary_flag: # with open(src_file, "r+", encoding="utf8") as f_read: select = ["查询","修改","添加","删除","退出"] for opt in select: print (select.index(opt),opt) user_input = input("please intput num") if user_input.isdigit() and int(user_input)>=0 and int(user_input) < len(select): user_input = int(user_input) indx_opt = select[user_input] opt_input= input(indx_opt+">>>") if opt_input == "0": info_input = input("请输入域名>>> ") for x in select_file(src_file,info_input): print(x.strip()) elif opt_input == "1": modify_file() elif opt_input == "2": add_file() elif opt_input == "3": delete_file() elif opt_input == "4": quary_flag = True; break if quary_flag: break else: continue # print(opt_input) elif user_input == "q": continue elif user_input == "Q": break else: continue if __name__ == "__main__": main()
haproyx.conf文件
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.oldboy1.org server 10.2.3.1 weight 1 maxconn 10 server 1.3.3.3 weight 1 maxconn 1 server 10.3.3.2 weight 12 maxconn 100 server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000 backend www.oldboy2.org server 10.2.2.1 weight 1 maxconn 1 server 1.2.2.1 weight 10 maxconn 20 server 10.3.2.22 weight 10 maxconn 1000 server 10.3.2.1 weight 2 maxconn 10 server 192.168.1.2 192.168.1.3 weight 2 maxconn 100 server 2.2.1.1 weight 10 maxconn 100 backend www.oldboy20.org server 192.168.168.21 weight 2 maxconn 600 server 10.8.2.10 weight 8 maxconn 1000 server 1.2.3.2 weight 1 maxconn 1 server 10.18.10.21 weight 1 maxconn 300