需求:

 1、查
输入:www.oldboy.org
获取当前backend下的所有记录 2、新建
输入:
arg = {
'backend': 'www.oldboy.org',
'record':{
'server': '100.1.7.9',
'weight': 20,
'maxconn': 30
}
} 3、删除
输入:
arg = {
'backend': 'www.oldboy.org',
'record':{
'server': '100.1.7.9',
'weight': 20,
'maxconn': 30
}
}
haproxy.cfg配置文件
 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

简易流程图:


 # -*- coding:utf-8 -*-
# Author: JACK ZHAO #菜单列表
operation_list = ["Search haproxy.cfg backend information","Add haproxy.cfg backend information",\
"Delete haproy.cfg backend information"]
#状态判断标志
flag_search = 0
flag_add = 0 while True:
flag_search = 0
print(" Haproy configuration file management ".center(50, "#"))
for index,i in enumerate(operation_list): #遍历菜单列表
print([index],i)
choice = input("Please enter your choice[Q:exit]:")
if choice.isdigit(): #判读输入是否为整数
choice = int(choice)
if choice >= 0 and choice <= 2: #判读选择是否在菜单对应的数字内
if choice == 0: #查询backend information
url = input("Please enter URL Address:")
with open("haproxy.cfg","r",encoding="utf-8") as f_search: #打开haproxy.cfg一次性读取到内存中
for line in f_search:
if flag_search == 1:
if "backend" in line:
flag_search = 0
continue
else:
if len(line) <= 1: #不打印空白行
continue
else:
print("\033[32;1m%s\033[0m" % line.strip()) #打印符合条件的行,并去掉前后空格、换行符
continue
if "backend %s"%url in line and "use_backend" not in line :
flag_search = 1
elif choice == 1: #新增backend information
arg = input("Pleas enter backend:")
dic_add = eval('''%s'''%arg) #将输入的字符串转成字典
with open("haproxy.cfg", "a+", encoding="utf-8") as f_add:
f_add.seek(0) #将位置光标移动开始位置,a+模式默认光标在文件最后
for line in f_add:
if dic_add["backend"] in line and "use_backend" not in line: #判读backend 是否已经存在
print("\033[31;1m%s is exists.\033[0m" %dic_add["backend"])
flag_add =1
break
if flag_add == 1:
continue
f_add.write("\nbackend %s\n" %dic_add["backend"])
f_add.write("\t\tserver %s weight %s maxconn %s\n" % (dic_add["record"]["server"],\
dic_add["record"]["weight"],dic_add["record"]["maxconn"]))
elif choice == 2:
arg = input("Pleas enter backend:")
dic_delete = eval('''%s''' % arg) #将输入的字符串转为字典格式
with open("haproxy.cfg", "r", encoding='utf-8') as f_delete:
lines = f_delete.readlines()
with open("haproxy.cfg", "w", encoding='utf-8') as f_delete: #覆盖源文件的方式删除内容
for line in lines:
if "backend %s" %dic_delete["backend"] in line or "server %s weight %s maxconn %s"\
%(dic_delete["record"]["server"],dic_delete["record"]["weight"],dic_delete["record"]["maxconn"]) in line:
continue
f_delete.write(line)
else:
print("It's only going to be 0 to 2.") #必须是菜单对应的数字
continue
elif choice == "Q": #选择退出
exit()
else:
print("It has to be an integer.")

5.修改haproxy配置文件的更多相关文章

  1. s12-day03-work01 python修改haproxy配置文件(初级版本)

    #!/usr/local/env python3 ''' Author:@南非波波 Blog:http://www.cnblogs.com/songqingbo/ E-mail:qingbo.song ...

  2. Python3.5 day3作业二:修改haproxy配置文件。

    需求: 1.使python具体增删查的功能. haproxy的配置文件. global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 lo ...

  3. python基础-修改haproxy配置文件

    需要掌握的知识: 1.函数 2.文件处理 3.tag的用法 4.程序的解耦 需求: 1:查询 2:添加 3:删除 4:修改 5:退出 haproxy.conf 配置文件内容: global log 1 ...

  4. 用python修改haproxy配置文件

    需求: 当用户输入域名的时候,显示出来下面的记录 当用户需要输入添加纪录的时候,添加到你需要的那个域名下面 global log 127.0.0.1 local2 daemon maxconn 256 ...

  5. Python3学习之路~2.10 修改haproxy配置文件

    需求: .查 输入:www.oldboy.org 获取当前backend下的所有记录 .新建 输入: arg = { 'bakend': 'www.oldboy.org', 'record':{ 's ...

  6. 修改haproxy配置文件

    需求: 1.查 输入:www.oldboy.org 获取当前backend下的所有记录 2.新建 输入: arg = { 'bakend': 'www.oldboy.org', 'record':{ ...

  7. python基础-4.1 open 打开文件练习:修改haproxy配置文件

    1.如何在线上环境优雅的修改配置文件? 配置文件名称ini global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 in ...

  8. 作业---修改haproxy配置文件

    #查询 f=open("C:\\aaaaaaaaaaaaa\\haproxy.txt", "r", encoding="utf-8") ha ...

  9. python编辑修改haproxy配置文件--文件基础操作

    一.需求分析 有查询,删除,添加的功能 查询功能:查询则打印查询内容,如果不存在也要打印相应的信息 删除功能:查询到要删除内容则删除,打印信息. 添加功能:同上. 二.流程图 三.代码实现 本程序主要 ...

随机推荐

  1. Last_SQL_Errno: 1050

    主库上create table,从库上存在. 报错信息如下所示:                Last_SQL_Errno: 1050                Last_SQL_Error: ...

  2. 【[SCOI2015]小凸玩矩阵】

    题目 第\(k\)大显然没有什么办法直接求,于是多一个\(log\)来二分一波 现在的问题变成了判断一个\(mid\)是否能成为第\(k\)大 这还是一个非常经典的棋盘模型,于是经典的做法就是转化成二 ...

  3. 在vue中同时使用过渡和动画

    在上次的动画中,在显示和隐藏有动画效果,但是,刷新页面的时候,第一次的显示没有动画效果 需求:刷新页面的时候也有动画效果 <transition name='fade' appear enter ...

  4. SVN知识集合

    1. 如果某个项目之前保存了A仓库的信息,无法切换到B仓库(通过AnkhSVN或者VisualSVN),可以先在本地去除版本控制(用TortoiseSVN),然后导出B仓库信息(用TortoiseSV ...

  5. sql server 基础

    1 .左连接 select a.* ,b.* from student as aleft join hobby as bon a.hobbyid=b.hobbyid 2. 右 连接 select a. ...

  6. 通过redis实现的一个抢红包流程,仅做模拟【上】

    建议结合下一篇一起看 下一篇 数据结构+基础设施 数据结构 这里通过spring-data-jpa+mysql实现DB部分的处理,其中有lombok的参与 @MappedSuperclass @Dat ...

  7. 缓冲区溢出实战教程系列(二):dev c++编译汇编代码

    小伙伴们对我上一篇文章的反应完全出乎了我的意料,感谢大家对我的支持和认可.接下来我会精心的把这一系列课程设计好,尽量详细的展示给大家.上篇文章我列举了一个缓冲区溢出的小例子,并提到了dev c++.o ...

  8. Linux - bashrc之alias

    1. cd ~ 2. touch .bashrc // 若该文件不存在的话 3. vim .bashrc ----------------复制粘贴如下文本--------------- # alias ...

  9. sql的使用

    1.自动获取最新订单号 select concat('XJDD',DATE_FORMAT(now(),'%Y%m%d'), LPAD(( FOR )) , max(SUBSTRING(inquiryn ...

  10. HTML常用标签用法及实例

    HTML常用标签用法及实例1.<!--1.注释-->2.<!--2.DOCTPYE 声明文档类型-->3.<!--3.a--> <a href="h ...