用python修改haproxy配置文件

原创 2016年06月01日 09:45:20

需求:

    当用户输入域名的时候,显示出来下面的记录

    当用户需要输入添加纪录的时候,添加到你需要的那个域名下面

# !/usr/bin/env python
# -*- coding:utf-8 -*-

def select(arg):
    """
    要求用户输入域名,可以查看webserver的子作用域
    针对haproxy的配置文件
    思路:
    a.逐行读取文件
    b.当我遇到backend + 域名的行的时候,将其子作用域放到一个空列表显示给用户看
    c.再当我遇到以backend开头的时候就结束循环就ok了
    d.因为这个子作用域是需要显示 的,就要拿出来,所以要特别显示出来,要与众不同,所以我们在这里定义标志位来显示这个与众不同
    :param arg:
    :return:
    """
    result = []
    flag = False
    with open("haproxy.txt", "r", encoding="utf-8") as f:
        for line in f :
            if line.strip() == "backend %s" % arg:
                flag = True
                continue
            if line.strip().startswith("backend"):
                flag  = False
            if flag:
                result.append(line)
    return result
ret = select("www.oldboy.org")

for i in ret :
    print(i)
#++++++++++++++++++++++++++++
def sele_add(yuming, record):
    """
    增加:
    a.先查看有没有这个域名,如果没有在最后添加就可以了
    b.如果有,在检测有没有要和你相同的那个子作用域,
    c.如果有,则pass,如果没有就在最后一行添加

    方法一:
    a.查询webserver域名是用户要的那个域名
    b.把查询到的结果添加新纪录写入到新的文件中
    c.在继续把除了这个域名意外的作用域及其他内容写入到新文件中
    方法二:
    a.就是在下一个新的域名之前加入用户需要加入的新纪录
    #也可以理解为先插入那行在写backend
    b.在排除是否已经存在
    c.当伪代码已经写完的时候,肯定不能实现,所以我们得要修改代码,那么就需要用到标志位 因为只在当前域名后第一个backend
    前添加纪录,所以标志位在标记的时候需要 更改为数字
    :param arg:
    :return:
    """

    """
    biaozhiwei = False
    with open("haproxy.txt", "r", encoding="utf-8") as old, open("haproxy2.txt", "w", encoding="utf-8") as new:
        res_list = select(yuming)
        res_list.append(" "*8 + record + "\n")
        for line in old:
            if line.strip() == "backend %s" % yuming:
                biaozhiwei = True#注意
                new.write(line)
                for i in res_list:
                    new.write(i )

                continue
            if line.strip().startswith("backend"):
                biaozhiwei = False
            if not biaozhiwei:
                new.write(line)
    """
#No.2
# 方法二:
# a.就是在下一个新的域名之前加入用户需要加入的新纪录
#也可以理解为先插入那行在写backend
# b.在排除是否已经存在
#----------------
#判断域名是否存在,如果存在再次判断记录是否存在,如果存在,就pass,如果不存在就添加
    bzw = 2
    result = []
    a = 0
    with open ("haproxy.txt", "r", encoding="utf-8") as old , open("haproxy2.txt", "w", encoding="utf-8") as new:
        if ("backend %s" % yuming ) in old:
            print("cunz")

            for line in old:

                if line.strip() == "backend %s" % yuming:
                    bzw = 0
                    result.append(line)
                    new.write(line)
                    continue
                if line.strip().startswith("backend"):
                    bzw += 1   #因为我们会遇到很多个backend,所以就自加1 了
                    if bzw == 1:
                        if (" "*8 + record + "\n") in result:
                            pass
                        else:
                            new.write(" "*8 + record + "\n")
                new.write(line)
        else:
            print("bucz")
            with open("haproxy.txt", "r", encoding="utf-8") as old, open("haproxy2.txt", "w", encoding="utf-8") as new:
                for line in old:
                    new.write(line)
                new.write("\nbackend %s\n" % yuming)
                new.write(" "*8 + record + "\n")

sele_add("www.oldboy.orgt","1233446")



配置文件

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
        server 100.1.7.92 100.1.7.93 weight 20 maxconn 3000
        server 100.1.7.94 100.1.7.93 weight 20 maxconn 3000

backend buy.oldboy.org
        server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000





版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

python案例1---修改haproxy的配置文件

python案例1---修改haproxy的配置文件
  • wyqlxy
  • wyqlxy
  • 2016-07-14 10:28
  • 1284

中国地区三级联动下拉菜单代码和示例(附带代码下载)

中国地区三级联动下拉菜单代码和示例(附带代码下载)  2006年3月27日1:13 来源:E欧网      做东西时经常用到中国地区选择功能,于是从网上搜索一些中国地区js代码,然后给他引用到aspx...
  • lu_zzl
  • lu_zzl
  • 2006-06-30 09:55
  • 1003

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

wampserver 2.5 You don't have permission to access / on this server.

本人使用wamp设置虚拟主机遇到的错误  ,在http://bbs.csdn.net/topics/390904273?page=1#post-401337565 这里找到了答案 如果你的项目...

Python实现在线上环境优雅的修改配置文件

原配置文件: global log 127.0.0.1 local2 daemon maxconn 256 log 12...

FreeBSD---修改配置文件

 要修改提示符先要找到关于CSH-SHELL的配置文件,这个配置文件是[#/.cshrc],找到这个文件后用编辑器打开即可(Vi的编辑器打开语句是:#vi /.cshrc如果你的机器上没有Vi编...

openwrt配置文件修改

测试平台:路由器tp-link  wr703n,wan/lan共用端口,注命令以‘#’开头,但不是命令的一部分,“//”做注释用,实际修改中不要加入这种注释,这种注释在配置文件中是非法的   Op...

Haproxy配置文件详解

frontend http

HAProxy配置文件详解

根据功能、用途不同,其配置文件主要由5部分组成,分别为global部分,defautls部分,frontend部分、backend部分、listen部分  1)global部分:用于设置全局配置参数,...

haproxy 配置文件说明

haproxy.cfgglobal # 全局配置 log 127.0.0.1 local0 log ...

haproxy配置文件详解

#/usr/local/sbin/haproxy -f /etc/haproxy/haproxy.cfg -st `cat /var/run/haproxy.pid`       ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)