码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-11-20 16:07:07      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:demo   ica   配置   splay   min   hid   remove   and   tle   

技术分享
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

原配置文件
原配置文件
技术分享
1、查
    输入:www.oldboy.org
    获取当前backend下的所有记录

2、新建
    输入:
        arg = {
            bakend: www.oldboy.org,
            record:{
                server: 100.1.7.9,
                weight: 20,
                maxconn: 30
            }
        }

3、删除
    输入:
        arg = {
            bakend: www.oldboy.org,
            record:{
                server: 100.1.7.9,
                weight: 20,
                maxconn: 30
            }
        }
需求
技术分享
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import json
import os


def fetch(backend):
    backend_title = backend %s % backend
    record_list = []
    with open(ha) as obj:
        flag = False
        for line in obj:
            line = line.strip()
            if line == backend_title:
                flag = True
                continue
            if flag and line.startswith(backend):
                flag = False
                break

            if flag and line:
                record_list.append(line)

    return record_list


def add(dict_info):
    backend = dict_info.get(backend)
    record_list = fetch(backend)
    backend_title = "backend %s" % backend
    current_record = "server %s %s weight %d maxconn %d" % (dict_info[record][server], dict_info[record][server], dict_info[record][weight], dict_info[record][maxconn])
    if not record_list:
        record_list.append(backend_title)
        record_list.append(current_record)
        with open(ha) as read_file, open(ha.new, w) as write_file:
            flag = False
            for line in read_file:
                write_file.write(line)
            for i in record_list:
                if i.startswith(backend):
                    write_file.write(i+\n)
                else:
                    write_file.write("%s%s\n" % (8*" ", i))
    else:
        record_list.insert(0, backend_title)
        if current_record not in record_list:
            record_list.append(current_record)

        with open(ha) as read_file, open(ha.new, w) as write_file:
            flag = False
            has_write = False
            for line in read_file:
                line_strip = line.strip()
                if line_strip == backend_title:
                    flag = True
                    continue
                if flag and line_strip.startswith(backend):
                    flag = False
                if not flag:
                    write_file.write(line)
                else:
                    if not has_write:
                        for i in record_list:
                            if i.startswith(backend):
                                write_file.write(i+\n)
                            else:
                                write_file.write("%s%s\n" % (8*" ", i))
                    has_write = True
    os.rename(ha,ha.bak)
    os.rename(ha.new,ha)


def remove(dict_info):
    backend = dict_info.get(backend)
    record_list = fetch(backend)
    backend_title = "backend %s" % backend
    current_record = "server %s %s weight %d maxconn %d" % (dict_info[record][server], dict_info[record][server], dict_info[record][weight], dict_info[record][maxconn])
    if not record_list:
        return
    else:
        if current_record not in record_list:
            return
        else:
            del record_list[record_list.index(current_record)]
            if len(record_list) > 0:
                record_list.insert(0, backend_title)
        with open(ha) as read_file, open(ha.new, w) as write_file:
            flag = False
            has_write = False
            for line in read_file:
                line_strip = line.strip()
                if line_strip == backend_title:
                    flag = True
                    continue
                if flag and line_strip.startswith(backend):
                    flag = False
                if not flag:
                    write_file.write(line)
                else:
                    if not has_write:
                        for i in record_list:
                            if i.startswith(backend):
                                write_file.write(i+\n)
                            else:
                                write_file.write("%s%s\n" % (8*" ", i))
                    has_write = True
    os.rename(ha,ha.bak)
    os.rename(ha.new,ha)

if __name__ == __main__:
    """
    print ‘1、获取;2、添加;3、删除‘
    num = raw_input(‘请输入序号:‘)
    data = raw_input(‘请输入内容:‘)
    if num == ‘1‘:
        fetch(data)
    else:
        dict_data = json.loads(data)
        if num == ‘2‘:
            add(dict_data)
        elif num == ‘3‘:
            remove(dict_data)
        else:
            pass
    """
    #data = "www.oldboy.org"
    #fetch(data)
    #data = ‘{"backend": "tettst.oldboy.org","record":{"server": "100.1.7.90","weight": 20,"maxconn": 30}}‘
    #dict_data = json.loads(data)
    #add(dict_data)
    #remove(dict_data)

demo
demo

 

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

标签:demo   ica   配置   splay   min   hid   remove   and   tle   

原文地址:http://www.cnblogs.com/python3-study/p/6082718.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!