python作业----修改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 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

时间: 2024-10-13 01:27:54

python作业----修改haproxy文件的相关文章

python脚本修改hosts文件

记一次使用python脚本来修改hosts文件,由于公司服务器需要换ip地址,服务器里都是Linux系统,而hosts文件中有些解析的ip,手动一台一台的解析太麻烦,就写了这个脚本.本来以为感觉很简单,但是写的过程真不好写,也试过shell脚本,不过也不好写.然后就直接用python写,也找了一些网上的教程,不过也没有很好的解决问题.下面把脚本贴出来记录下 #!/usr/bin/python #coding:utf8 import os import sys import re hostsfil

Day3作业:haproxy文件配置

实现功能 1 backend记录查询 2 增加backend记录 1)若backend记录不存在,则添加backend及ha记录 2)若backend存在,要添加的记录存在,则返回提示已存在 3)若backend存在,要添加的记录不存在,则添加记录 3 删除backend记录 1)若backend不存在则返回提示不存在 2)若backend存在,根据显示的backend记录,选择序号删除,若删除指定后记录为空则连backend行同时删除,若删除指定后记录不为空则返回当前backend记录 Hap

修改Haproxy文件配置,实现增删改查

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 /admi

python批量修改txt文件,csv文件 编码格式

from os import listdir from chardet import detect fns = (fn for fn in listdir() if fn.endswith('.csv')) for fn in fns: with open(fn, 'rb+') as fp: content = fp.read() encoding = detect(content)['encoding'] content = content.decode(encoding).encode('u

Python xlrd、xlwt、xlutils读取、修改Excel文件

Python xlrd.xlwt.xlutils读取.修改Excel文件 一.xlrd读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台.这也就意味着你可以在Linux下读取Excel文件. 首先,打开workbook:    import xlrdwb = xlrd.open_workbook('myworkbook.xls') 检查表单名字:    wb.sheet_names() 得到第一张表单,两种方式:索引和名字    sh = wb.sheet_by_index(0)s

Python小程序—修改haproxy配置文件

程序2:修改haproxy配置文件  需求: 1 1.查 2 输入:www.oldboy.org 3 获取当前backend下的所有记录 4 5 2.新建 6 输入: 7 arg = { 8 'bakend': 'www.oldboy.org', 9 'record':{ 10 'server': '100.1.7.9', 11 'weight': 20, 12 'maxconn': 30 13 } 14 } 15 16 3.删除 17 输入: 18 arg = { 19 'bakend': '

Python作业-选课系统

Python作业-选课系统 学习 python Python作业-选课系统 days6作业-选课系统: 1. 程序说明 2. 思路和程序限制 3. 选课系统程序目录结构 4. 测试帐户说明 5. 程序测试过程 days6作业-选课系统: 角色:学校.学员.课程.讲师 作业需求 1.创建北京.上海 2 所学校 2.创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开 3.课程包含,周期,价格,通过学校创建课程 4.通过学校创建班级, 班级关联课程.

Python代写,Python作业代写,代写Python,代做Python(微信leechanx)

Python代写,Python作业代写,代写Python,代做Python(微信leechanx) Redis:Cannot assign requested address的解决办法 客户端频繁的连服务器,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端口号,所以新的连接没办法绑定端口,即"Cannot assign requestedaddress".是客户端的问题不是服务器端的问题.通过netstat,的确看到很多TIME_WAIT状态的连接.

【转】Ubuntu修改Hosts文件工具HostsTool使用说明

国内IT开发者都会面临访问google等国外网站不稳定的问题,这些问题一方面可以通过番墙来解决,也可以通过修改本机hosts文件来解决. 之前在Windows上一直使用HostsTool这个国人的修改hosts文件软件,切换到Ubuntu环境自然也首先想到这个工具.Ubuntu安装方法如下: 1.下载最新版HostsTool for linux 打开https://hosts.huhamhire.com/get-hosts-x11.html,也可以这里下载1.9.8版本,更新日期:2014030