• Python语法命令学习-Day3(作业练习)


    作业要求:(作业转自武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()

  • 相关阅读:
    说一下 session 的工作原理?
    session 和 cookie 有什么区别?
    说一下 JSP 的 4 种作用域?
    jsp有哪些内置对象?作用分别是什么?
    MVC的各个部分都有那些技术来实现?如何实现?
    request.getAttribute()和 request.getParameter()有何区别?
    Servlet API中forward()与redirect()的区别?
    jsp和servlet的区别、共同点、各自应用的范围?
    说一说Servlet的生命周期?
    如何从CDN加载jQuery?
  • 原文地址:https://www.cnblogs.com/lich1x/p/9231170.html
Copyright © 2020-2023  润新知