作业3:修改haproxy配置文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作业3:修改haproxy配置文件相关的知识,希望对你有一定的参考价值。

  1 # -*- coding: utf-8 -*-
  2 """
  3 Created on Wed Oct  4 16:49:34 2017
  4 
  5 @author: 鑫。
  6 """
  7 import re,os            #引入re,os模块
  8 def query(x):           #定义函数(将列表中的元素按下标和名字展示出来)
  9     for index,line in enumerate(x):
 10         print(index,line)
 11             
 12             
 13 backend_list=[]    #[www.haonanhai.net,www.baidu.com]
 14 address_dic={}   #{‘www.oldboy.org‘: [[‘server‘, ‘8.8.8.8‘, ‘weight‘, ‘8‘, ‘maxconn‘, ‘8‘], [‘server‘, ‘100.1.7.9‘, ‘weight‘, ‘20‘, ‘maxconn‘, ‘3000‘], [‘server‘, ‘100.1.7.9‘, ‘weight‘, ‘30‘, ‘maxconn‘, ‘5000‘]], ‘www.hao123.com‘: [[‘server‘, ‘8.6.5.1‘, ‘weight‘, ‘156‘, ‘maxconn‘, ‘23‘]]}
 15 #server_info=[]
 16 
 17 server_flag = False  #判断标识符,是否进行下面的While循环
 18 
 19 with open("haproxy.cfg","r+") as f:    #打开文件,with(自动关闭文件)
 20     for line in f:                      #将文件存在line中,用for循环一行一行读
 21         #print(line.strip("\n"))
 22         line=line.strip(\n)
 23         if re.match(backend,line):                #re.match(判断‘baxkend‘是否在line中,,如果在返回TRUE)
 24             backend_name=re.split(\s,line)[1]     #用re.split 以‘ ‘切割哪行 取第二份
 25             #print(backend_name)
 26             backend_list.append(backend_name)       #将切割下的第二份存在列表中
 27             #print(backend_list)
 28             server_flag = True                        #使判断标识符为True
 29             server_info1=[]                         #定义一个新列表
 30         elif server_flag and re.match(\s+server,line):     #re.match(判断‘\s+server‘是否在line中,,如果在返回TRUE)
 31             address_name=re.split("\s+",line)               #切割成【】 临时存放在address_name中,去空格
 32             address_name.remove(‘‘)
 33             #print(address_name)
 34             #address_dic[address_name[0]]=address_name[1]
 35             #address_dic[address_name[2]]=address_name[3]
 36             #address_dic[address_name[4]]=address_name[5]
 37             server_info1.append(address_name)                   #将【】存在新列表中
 38             address_dic[backend_name]=server_info1                #存到字典中‘www.oldboy.org‘: [[‘server‘, ‘8.8.8.8‘, ‘weight‘, ‘8‘, ‘maxconn‘, ‘8‘], [‘server‘, ‘100.1.7.9‘, ‘weight‘, ‘20‘, ‘maxconn‘, ‘3000‘], [‘server‘, ‘100.1.7.9‘, ‘weight‘, ‘30‘, ‘maxconn‘, ‘5000‘]], ‘www.hao123.com‘: [[‘server‘, ‘8.6.5.1‘, ‘weight‘, ‘156‘, ‘maxconn‘, ‘23‘]]}
 39             #print(address_name)
 40             #print(address_name)
 41             #print(address_dic)
 42         else:
 43             server_flag = False
 44 #print(server_info)
 45 #print(address_dic)
 46 #print(backend_list)
 47 while True:
 48     options_list=["查询backend","删除backend","新增backend","退出"]
 49     query(options_list)
 50     #print(index)
 51     user_input=int(input("请输入要对backend进行的操作:"))
 52     if user_input==0:
 53         query(backend_list)
 54         user_input_2=int(input("请输入要查询的backend:"))
 55         
 56         print("--------------%s----------------"%backend_list[user_input_2])        #输出‘www.oldboy.org’
 57         print(address_dic[backend_list[user_input_2]])              #用字典读取‘www.oldboy.org’下的值
 58             
 59     elif user_input==1:
 60         query(backend_list)
 61         user_input_2=int(input("请输入要删除的backend:"))
 62         ‘‘‘for index_1,line_1 in enumerate(address_dic[backend_list[user_input_2]]):
 63             print(index_1,line_1)‘‘‘
 64         f=open("haproxy.cfg","r+")   #打开"haproxy.cfg" 读到 f 中
 65         f_new=open("haproxy_new.cfg","w")      #新建一个文档,读到f_new中
 66         for abc in f:
 67             backend_list_easy="backend %s"%backend_list[user_input_2]
 68             if backend_list_easy in abc:                     #如果哪行在的话,输出“----------------”
 69                 f_new.write("-------------------------------------\n")
 70             else:
 71                 f_new.write(abc)
 72         f.close()
 73         f_new.close()
 74         os.remove("haproxy.cfg")              #删除原文件
 75         os.rename("haproxy_new.cfg", "haproxy.cfg")      #将新文件改名
 76         print("------------已删除%s-------------"%backend_list[user_input_2])
 77         
 78         
 79     elif user_input==2:
 80         for index,line_1 in enumerate(backend_list):
 81             print(index,line_1)
 82         user_input_2=int(input("请输入要修改的backend,如要增加backend请输入888:"))
 83         if user_input_2==888:
 84             with open("haproxy.cfg","a+") as ff:   
 85                 backend_input=input("请输入要增加的backend:")
 86                 ff.write("\nbackend %s\n"%backend_input)
 87                 print("------------backend已添加----------------")
 88                 backend_input2=input("请输入server:")
 89                 backend_input3=input("请输入weight:")
 90                 backend_input4=input("请输入maxconn:")
 91                 ff.write("        server %s weight %s maxconn %s\n"%(backend_input2,backend_input3,backend_input4))
 92                 print("--------------添加完毕---------------")
 93         ‘‘‘elif user_input_2<index and user_input_2>=0:
 94             #print(address_dic[backend_list[user_input_2]])
 95             for index_1,line_1 in enumerate(address_dic[backend_list[user_input_2]]):
 96                 print(index_1,line_1)
 97             user_input_3=input("请输入要修改的**:")
 98             if user_input_3 < index and user_input_3>=0:
 99                 ser_list=["修改server","修改weight","修改maxconn"]
100                 for index_2,line_2 in enumerate(ser_list,1):
101                     print(index_2,line_2)
102                # def change(x):
103     
104         elif user_input_2<index and user_input_2>=0:‘‘‘
105             
106     elif user_input==3:
107         break

 

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 8.8.8.8 weight 8 maxconn 8

backend www.baidu.com
server 100.1.7.9 weight 20 maxconn 3000
server 100.1.7.9 weight 30 maxconn 5000

backend www.hao123.com
server 8.6.5.1 weight 156 maxconn 23

backend www.mi.com
server 168.168.168.16 weight 156 maxconn 2

以上是关于作业3:修改haproxy配置文件的主要内容,如果未能解决你的问题,请参考以下文章

作业:老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改

第三周:HAproxy配置文件操作

第三周作业 修改配置文件

作业修改配置文件 查询,添加

python-haproxy作业讲解视频总结

python作业----修改haproxy文件