需求:

 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. codeforces 600E Lomsat gelral

    题面:codeforces600E 学习一下$dsu \ on \ tree$.. 这个东西可以处理很多无修改子树问题,复杂度通常为$O(nlogn)$. 主要操作是:我们先把整棵树链剖一下,然后每次 ...

  2. Ubuntu 18.04 一键安装深度截图工具 Deepin Screenshot

    一直在寻找Linux下的截图软件,终于发现了Deepin ScreenShot,其功能齐全,界面美观,唯一的缺点需要自己配置快捷键(后面会讲). 安装 直接在Ubuntu商店搜索“深度截图”,点击“安 ...

  3. glocktop

    glocktop: Display or print active GFS2 locks. Index of glocktop man page Read glocktop man page on L ...

  4. HTTP Method 详细解读(`GET` `HEAD` `POST` `OPTIONS` `PUT` `DELETE` `TRACE` `CONNECT`)--转

    前言 HTTP Method的历史: HTTP 0.9 这个版本只有GET方法 HTTP 1.0 这个版本有GET HEAD POST这三个方法 HTTP 1.1 这个版本是当前版本,包含GET HE ...

  5. 绕不开的this

    犹豫两秒要不要整理this,从红皮书上看了半天,没搞懂哎(弱爆了) 什么是this?this是在执行上下文创建时期创建的一个执行过程中不可改变的变量.执行上下文是指js引擎会将代码执行前需要的变量th ...

  6. 深入理解JVM类加载机制

    1.什么是类加载机制? JVM把class文件加载到内存里面,并对数据进行验证.准备.解析和初始化,最终能够被形成被JVM可以直接使用的Java类型的过程. 生命周期包含:加载,验证,准备,解析,初始 ...

  7. java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重

    package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...

  8. architecture x86_64(Error)

    undefined symbols for architecture x86_64 错误如下 因为提示文件非第三方文件,最初尝试使用以下方式处理 iOS :undefined symbols for ...

  9. Centos7下MySql5.7安装及配置

    安装MySql 软件包: mysql-community-libs-5.7.22-1.el7.x86_64.rpm mysql-community-common-5.7.22-1.el7.x86_64 ...

  10. java动态返回一个大对象里多个小对象map返回,el表达式用c:set拼接

    基于堆内存,先把map放到返回值里 Map _map=new HashMap(); modelAndView.addObject("pledgeInsurance",_map);/ ...