作业要求:(作业转自武sir)
老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改,不再是以往的打开文件进行直接操作了。
现有ha配置文件如下:
输出:
1、获取ha记录
2、增加ha记录
3、删除ha记录
num = raw_input('请输入操作序号:')
如果用户输入的 1:
read = raw_input('请输入backend:') 如输入:www.oldboy.org
讲配置文件 backend www.oldboy.org 节点下的所有记录获取到,并输入到终端
如果用户输入的 2:
read = raw_input('请输入要新加的记录:') 如: {"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}
# 讲read字符串转换成 字典类型
read_dict = json.loads(read)
backend_title = read_dict['backend']
# 去配置文件中找到指定的节点:
# backend test.oldboy.org
# 如果已经存在,
# 则在此节点下添加根据用输入构造出的记录,例如:
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
# 如果不存在,
# 则添加backend节点和记录,例如:
backend test.oldboy.org
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
# (可选)可以再对节点下记录进行判断是否已经存在
如果用户输入的 3:
read = raw_input('请输入要删除的记录:') 如: {"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}
# 讲read字符串转换成 字典类型
read_dict = json.loads(read)
backend_title = read_dict['backend']
#去配置文件中找到指定的节点,并在删除指定记录,如:
backend test.oldboy.org
server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000 # 删除掉
# (可选)如果backend下所有的记录都已经被删除,那么将当前 backend test.oldboy.org 也删除掉。
我的答案: (###所有答案均自己写,肯定存在一些纰漏,欢迎指出###)
#! /usr/bin/env python
# -*- coding: utf-8 -*-
def a1():
'''
在只读选项中,当用户输入www.oldboy.org时,输出使用
:return:
'''
with open('DB1', 'r', encoding='utf-8') as f1:
for i, j in enumerate(f1.readlines(), 1):
if i == 29:
print(j)
# else:
# print('bye')
f1.close()
def a2():
'''
在只读选项中,当用户输入buy.oldboy.org时,输出使用
:return:
'''
with open('DB1','r',encoding='utf-8') as f2:
for i,j in enumerate(f2.readlines(),1):
if i == 32:
print(j)
f2.close()
def updateHA(Backend,Value):
'''
用户在选择增加ha记录后,函数主体
:return:
'''
count = 0
LineRead_index = 0
with open('DB1','r',encoding='utf-8') as f1:
for LineRead in f1.readlines():
count += 1
if Backend in LineRead:
LineRead_index = count
f1.close()
with open('DB1','r',encoding='utf-8') as f2:
DB1_str = f2.read()
f2.close()
DB1_list = DB1_str.split(' ')
DB1_list.insert(LineRead_index,Value)
DB1_str = ' '.join(DB1_list)
with open('DB1','w',encoding='utf-8') as f2:
f2.write(DB1_str)
f2.close()
def main():
user_input = input('1、获取ha记录 2、增加ha记录')
if user_input == '1':
#print(type(user_input))
read_input = input('请输入backend:')
if read_input == 'www.oldboy.org':
a1()
elif read_input == 'buy.oldboy.org':
a2()
elif user_input == '2':
NewBackend = input('请输入新的backend')
NewValue_add = input('请输入新的value')
NewValue = ' %s'% NewValue_add
#print(type(user_input))
updateHA(NewBackend,NewValue)
else:
if user_input.isdigit() is True:
print('请输入正确的选择!')
else:
print('看仔细了,数字懂伐?')
main()