需求:

1.使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
import  os,re,sys
from collections import defaultdict,OrderedDict
conf = "haproxy.cfg"
conf_new = "haproxy.cfg.new"
backend_list = []
server_dict= {}
show_dict = {}
backend_name_dict = {}
server_info= []
server_flag = False ###初始化server判断标志位###
with open(conf,'r') as ha: ###打开haproxy配置文件###
for line in ha:
line = line.strip('\n')
if re.match('backend',line): ###匹配配置文件以backend开头的行###
backend_name = re.split('\s+',line)[1]
backend_list.append(backend_name)
server_info1 = []
server_flag = True ###赋值标志位为真,用来与server关联###
elif server_flag and re.match('\s+server',line): ###匹配配置文件以server开头的行###
server_info = re.split('\s+',line)
server_info.remove('')
server_info1.append(server_info)
server_dict['server'] = server_info[1]
server_dict['weight'] = server_info[4]
server_dict['maxconn'] = server_info[5]
backend_name_dict[backend_name] = "name"
backend_name_dict[backend_name] = server_info1
else:
server_flag = False #循环
options_list = ["1.查询backend","2.删除backend","3.新增backend","5.退出"]
while True:
for i in options_list:
print(i)
find = (input("\033[94m请选择操作条目序号:\033[0m"))
if find.isdigit():
find = int((find))
#1是查询
if find == 1:
for i, ele in enumerate(backend_list):
print(i, ele)
find1 = input("请输入您要查询的backend的序号:")
find1 = int(find1)
for j in range(1):
print("==========%s============" %backend_list[find1])
for i in backend_name_dict[backend_list[find1]]:
print("server %s weigt %s maxconn %s" %(i[1],i[3],i[5]))
#2是删除
elif find == 2:
for i, ele in enumerate(backend_list):
print(i, ele)
find3 = int(input("请选择您要删除backend的序号:"))
server_show = []
for i, ele in enumerate(backend_name_dict[backend_list[find3]]):
server_show.append("server %s weight %s maxconn %s" % (ele[1], ele[3], ele[5]))
print(i, "server %s weight %s maxconn %s" % (ele[1], ele[3], ele[5]))
server_show1= str(server_show[0])
print(server_show1)
f = open(conf, "r")
f1 = open(conf_new, "a+")
for i in f:
if server_show1 in i:
i = i.replace(server_show1, "")
f1.write(i)
f1.flush()
f.close()
f1.close()
os.remove(conf)
os.rename(conf_new, conf)
backend_list1 = []
backend_list1.append("backend %s" %(backend_list[find3]))
backend_list2 = str(backend_list1[0])
f = open(conf, "r")
f1 = open(conf_new, "a+")
for i in f:
if backend_list2 in i:
i = i.replace(backend_list2, "")
f1.write(i)
f1.flush()
f.close()
f1.close()
os.remove(conf)
os.rename(conf_new, conf)
print("删除成功!!!")
#3是增加
elif find == 3:
arg = []
backend_name1 = []
backend_list3 = []
input_back = input("\033[94m请输入backend(www.orgboy.org):\033[0m")
arg.append("backend %s" %input_back)
input_server = input("\033[94m请输入server(127.0.0.1):\033[0m")
input_weight = input("\033[94m请输入weight(20):\033[0m")
# arg["weight"] = input_weight
input_maxconn = input("\033[94m请输入maxconn(3000):\033[0m")
arg.append(" server %s weight %s maxconn %s" %(input_server,input_weight,input_maxconn))
backend_name1 = str(arg[0])
f = open(conf, "a+")
f.write("%s \n" %backend_name1)
f.flush()
f.close()
backend_list3 = arg[1]
backend_list3 = str(backend_list3)
f = open(conf, "a+")
f.write("%s \n" %backend_list3)
f.close()
print("添加成功!!!")
#5是退出
elif find == 5:
exit()
else:
print("\033[91m请输入正确的序号\033[0m")
continue

Python3.5 day3作业二:修改haproxy配置文件。的更多相关文章

  1. (转)Python3.5 day3作业二:修改haproxy配置文件

    原文:http://www.cnblogs.com/iwxk/p/6010018.html

  2. s12-day03-work01 python修改haproxy配置文件(初级版本)

    #!/usr/local/env python3 ''' Author:@南非波波 Blog:http://www.cnblogs.com/songqingbo/ E-mail:qingbo.song ...

  3. Python3学习之路~2.10 修改haproxy配置文件

    需求: .查 输入:www.oldboy.org 获取当前backend下的所有记录 .新建 输入: arg = { 'bakend': 'www.oldboy.org', 'record':{ 's ...

  4. 作业---修改haproxy配置文件

    #查询 f=open("C:\\aaaaaaaaaaaaa\\haproxy.txt", "r", encoding="utf-8") ha ...

  5. python基础-修改haproxy配置文件

    需要掌握的知识: 1.函数 2.文件处理 3.tag的用法 4.程序的解耦 需求: 1:查询 2:添加 3:删除 4:修改 5:退出 haproxy.conf 配置文件内容: global log 1 ...

  6. 用python修改haproxy配置文件

    需求: 当用户输入域名的时候,显示出来下面的记录 当用户需要输入添加纪录的时候,添加到你需要的那个域名下面 global log 127.0.0.1 local2 daemon maxconn 256 ...

  7. 修改haproxy配置文件

    需求: 1.查 输入:www.oldboy.org 获取当前backend下的所有记录 2.新建 输入: arg = { 'bakend': 'www.oldboy.org', 'record':{ ...

  8. python作业之修改用户配置文件

    用户的配置文件如下 backend oldboy school school1 age 21 weight 210 qq 550176565 iphone 139987676backend oldgi ...

  9. python编辑修改haproxy配置文件--文件基础操作

    一.需求分析 有查询,删除,添加的功能 查询功能:查询则打印查询内容,如果不存在也要打印相应的信息 删除功能:查询到要删除内容则删除,打印信息. 添加功能:同上. 二.流程图 三.代码实现 本程序主要 ...

随机推荐

  1. 【清华集训】楼房重建 BZOJ 2957

    Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...

  2. java 连接接数据库 中的代码 放到配置文件中

    1.DButil.java package com.jobproject.util; import java.sql.Connection;import java.sql.DriverManager; ...

  3. linux 比较两个文件是否一致

    diff source target 如果一致不弹出任何信息

  4. CocoaPods报错:The dependency `AFNetworking ` is not used in any concrete target 解决办法

    产生这个问题的原因是最新版本的CocoaPods把Podfile文件的书写格式改变了,官网推荐用如下格式书写: platform :ios, '8.0' use_frameworks! target ...

  5. curses.h的安装和使用

    gcc test.c -o test 用以上命令编译包含curses.h头文件的程序时会出现各种引用未定义的错误,并且已经安装了 kernel-devel ncurese-devel ncurese- ...

  6. 在SharePoint 2013 Wiki Page中使用用户选择对话框

    JS部分: <script type="text/javascript"> function PeoplePicker() { var siteCollUrl = _s ...

  7. [原创]用命令行工具删除TFS2010服务器上的工作区信息

    下面的示例显示有关所有计算机上的所有用户已在地址 http://myserver:8080/tfs/DefaultCollection 上的以下团队项目集合中创建的所有工作区的列表. c:\proje ...

  8. iOS 对象和json互相转换

    // 将字典或者数组转化为JSON串 - (NSData *)toJSONData:(id)theData { NSError *error = nil; NSData *jsonData = [NS ...

  9. 攻城狮在路上(陆)-- hadoop分布式环境搭建(HA模式)

    一.环境说明: 操作系统:Centos6.5 Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 ...

  10. JS 原型链

    之前对JS的prototype知识比较模糊,今天理清了记下来,以防忘记,直切正题: 1.要明白原型链,就必须先清楚JS的构造函数模式: js是面向对象的语言,既然是面型对象,就一定会有一个对象的模板, ...