用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
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
配置文件
# !/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","")
用python修改haproxy配置文件的更多相关文章
- s12-day03-work01 python修改haproxy配置文件(初级版本)
#!/usr/local/env python3 ''' Author:@南非波波 Blog:http://www.cnblogs.com/songqingbo/ E-mail:qingbo.song ...
- Python3.5 day3作业二:修改haproxy配置文件。
需求: 1.使python具体增删查的功能. haproxy的配置文件. global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 lo ...
- python之haproxy配置文件操作(第三天)
作业: 对haproxy配置文件进行操作 要求: 对haproxy配置文件中backend下的server实现增删改查的功能 一.这个程序有二个版本 1. python2.7版本见haproxy_py ...
- python基础-修改haproxy配置文件
需要掌握的知识: 1.函数 2.文件处理 3.tag的用法 4.程序的解耦 需求: 1:查询 2:添加 3:删除 4:修改 5:退出 haproxy.conf 配置文件内容: global log 1 ...
- Python小程序之动态修改Haproxy配置文件
需求如下: 1.动态的查询添加删除haproxy节点信息 2.程序功能:add(添加).Del(删除).Query(查询) 3.添加时实例字符串为: {'backend': 'www.oldboy. ...
- python基础-4.1 open 打开文件练习:修改haproxy配置文件
1.如何在线上环境优雅的修改配置文件? 配置文件名称ini global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 in ...
- python编辑修改haproxy配置文件--文件基础操作
一.需求分析 有查询,删除,添加的功能 查询功能:查询则打印查询内容,如果不存在也要打印相应的信息 删除功能:查询到要删除内容则删除,打印信息. 添加功能:同上. 二.流程图 三.代码实现 本程序主要 ...
- python基础修改haproxy配置文件
1.通过eval(),可以将字符串转为字典类型. 2.Encode过程,是把python对象转换成json对象的一个过程,常用的两个函数是dumps和dump函数.两个函数的唯一区别就是dump把py ...
- Python 修改ha配置文件
任务要求: 1.用户输入字符串 {"backend": "test.oldboy.org","record":{"server&q ...
随机推荐
- Mysql优化系列(2)--通用化操作梳理
前面有两篇文章详细介绍了mysql优化举措:Mysql优化系列(0)--总结性梳理Mysql优化系列(1)--Innodb引擎下mysql自身配置优化 下面分类罗列下Mysql性能优化的一些技巧,熟练 ...
- DEDE整站动态化或整站静态化设置方法,织梦栏目批量静态/动态方法
跟版网建站接到一个朋友提问,100多各栏目全部要从动态变成静态,里面的文章也要静态化,如何更快捷的设置dede的静态化或者动态化呢? 直接用DEDE后台的SQL命令行工具, SQL语句: DEDE整站 ...
- codevs 2894 保留小数
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给你一个实数,小数点后不超过50位,请你保留到小数点后n位(四舍五入!!!) 输 ...
- 关于SQL SERVER数据库学习总结
对于SQL SERFVER数据库也学了有一阵子了,自己也对自己所学做了一些总结. 我们首先学习数据库设计的一些知识点和用SQL语句建库. 设计数据库步骤:需求分析阶段,概要设计阶段,详细设计阶段, 建 ...
- asp.net core 部署 提示DataProtectionServices 错误
今天在部署asp.net core网站时,因为调用到阿里云的api,api的参数需要加密签名,系统报出了如下错误: warn: Microsoft.Extensions.DependencyInjec ...
- 使用html2canvas实现浏览器截图
最近做项目为了解决全局异常信息记录,研究了一下浏览器全屏截图功能,方便用户发现异常时能够快速截图发给管理员.最终记录的异常信息如下,上面的[截图报告管理员]就是使用html2canvas前端插件实现的 ...
- Redis集群(三):主从配置一
一.本文目的 Redis的主从配置分为两篇文章,第一篇主要介绍了Redis主从配置的搭建过程及使用,第二篇主要说明各种情况下Redis主从状态,如Master挂掉,Slaver挂掉, ...
- jQuery中的$.fn【转】
$.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例每一个有效,下面有个不错的示例,喜欢的朋友可以参考下 $.fn是指jquery的命名空间,加上fn上的方法及属性,会 ...
- Java面试题总结(一)
Java面试总结 面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和 ...
- 更改UIsearchbar 的背景和cancel按钮(转)
修改背景 searchbar =[[UISearchBar alloc]initWithFrame:CGRectMake(,KTopBarHeight, , KTopBarHeight)]; sear ...