-python 修改haproxy配置文件
1.haproxy文件
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 weight 20 maxconn 3000
2.代码需求:
a.可查询haproxy配置文件
b.可增加相关网址及记录
c.可删除相关网址及记录
3. 功能实现:
a.输入相关网址,可查询相关记录信息;
b.按照字典样式输入网址及记录信息,可在haproxy文件中增加;
c.输入相关网址,可删除相关记录信息;
f = open("haproxy","r",encoding="gbk")
f_new = open("haproxy_new","w",encoding="gbk")
#将文件内容转换为一个列表,并定义一个变量。
b = f.readlines()
#定义三个选项:
option = ("1、请输入搜索的地址:","2、请输入增加的内容:","3、请输入删除的内容:")
#打印三个选项:
for i in option:
print(i)
choice = input("请选择操作方式:序列号>>>")
#如果选择1,则进入查找选项。
if choice == "1" :
data = input("请输入搜索地址:")
#利用字符串拼接,定义一个变量,-----backend所在的行。
address = "backend %s\n"%data
if address in b:
#利用列表的下标来定位位置,然后通过下标打印内容。
index_add = b.index(address)
print(b[index_add],b[index_add+1])
if address not in b:
print("您查找的内容不存在")
#如果选择2,则进入增加内容选项:
if choice =="2":
data = input("输入增加内容:")
data_eval = eval(data)
#通过列表计数器来判断输入的内容是否在列表中存在,如果计数器为0则不存在,如果计数器不为0则存在。
#不存在则添加,存在则不添加。
f_find = b.count("backend %s\n"%data_eval["backend"])
#如果backend后的内容在文件中不能找到则新增。
if f_find == 0:
for line in b:
f_new.write(line)
# for f_line2 in f:
# #将输入的内容通过字符串拼接的形式写入文件中
f_new.write("\nbackend ")
f_new.write(data_eval["backend"])
f_new.write("\n server %s weight %s maxconn %s"\
%(data_eval["record"]["server"],data_eval["record"]["weight"]\
,data_eval["record"]["maxconn"]))
#如果backend后的内容在文件中能找到则不执行任何操作。
if f_find != 0:
print("您添加的内容已经存在")
#如果选择3,则进入删除内容选项:
if choice == "3":
data = input("输入删除内容:")
data_eval = eval(data)
#通过列表计数器来判断输入的内容是否在列表中存在,如果计数器为0则不存在,如果计数器不为0则存在。
#不存在则添加,存在则不添加。
f_find = b.count("backend %s\n"%data_eval["backend"])
#如果backend后的内容在文件中不能找到则新增。
if f_find != 0:
b_index=b.index("backend www.oldboy.org\n")
b.pop(b_index)
b.pop(b_index)
for line in b:
f_new.write(line)
#如果backend后的内容在文件中不能找到则不执行任何操作。
if f_find == 0:
print("您输入的内容文件中不存在")
f.close()
f_new.close()
C:\Users\Lcj\Anaconda3\python.exe D:/exercise/1/day2/exercise(haproxy).py
1、请输入搜索的地址:
2、请输入增加的内容:
3、请输入删除的内容:
请选择操作方式:序列号>>>1
请输入搜索地址:www.oldboy.org
backend www.oldboy.org
server 100.1.7.9 weight 20 maxconn 3000
C:\Users\Lcj\Anaconda3\python.exe D:/exercise/1/day2/exercise(haproxy).py
1、请输入搜索的地址:
2、请输入增加的内容:
3、请输入删除的内容:
请选择操作方式:序列号>>>2
输入增加内容:{'backend': 'www.baidu.com','record': {'server': '100.1.7.8','weight': 20,'maxconn': 3000}}
Process finished with exit code 0
C:\Users\Lcj\Anaconda3\python.exe D:/exercise/1/day2/exercise(haproxy).py
1、请输入搜索的地址:
2、请输入增加的内容:
3、请输入删除的内容:
请选择操作方式:序列号>>>3
输入删除内容:{'backend':'www.oldboy.org'}