环境小硕的转行之路-13-haproxy文件修改

前言


这次潜水了几天是因为老板叫去出差了2天,然后周六堕落看ti9了,罪过罪过。这次赶快把作业赶完。再想想那个大作业,又找到python全栈的优质资源。希望能对我的码力有很大的提升。

作业要求


给一个配置txt文件

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

主要是修改最下面的backend的数据。 基本要求:
1.查:输入一个网址:如www.oldboys.com可以打印下一行sever,ip,weight,maxconn。
2.新建:输入一个字典({'backend': 'www.baidu.org','record':{'server': '100.1.7.9','weight': 20,'maxconn': 30}})可以追加到文件里面去。
3.删除:输入一个网址删除其所有相关的内容。


源代码

def info_message(message):#用于输出————————————info of **————————————
    print('33[33;1minfo of %s33[0m'.center(50,'-')%message)

def continue_process() :#用于询问是否继续
   choice = input('do you want to continue to operate the file again or exit this process? y/any other key.')
   if choice.lower() == 'y':
       pass
   else:
        exit()


def search_process():#搜索过程
    search_address = input('please input the search address:	')
    if  search_address in dict_file.keys():#判断搜索网站是否在临时字典里
        info_message(search_address)#输出————————————info of website————————————,以后不再注释
        print(dict_file[search_address])
    else:
        print("search address don't exist or invalid input.")

def add_process_input():
    add_address = input('33[32;1mplease input the info of your haproxy.33[0m')
    try:
        info = eval(add_address)#将输入字符串变成字典
        if info['backend'] not in dict_file.keys():
            file_add_info = '
backend {backend}
sever {sever} weight {weight} maxconn {maxconn}'
                            .format(backend=info['backend'],
                             sever=info['record']['server'],
                             weight=info['record']['weight'],
                             maxconn=info['record']['maxconn'])
            print('33[32;1m successfully added32[31')
            return file_add_info#返回要输入到文件里的值
        else:
            print('33[32;1mthe backend that you have input now has exists.33[0m')
            return 'continue'#若错误输入返回continue字符串在主函数判断。


    except  Exception :
        print('33[31;01minvalid input33[0m')
        return 'continue'
# add_info = add_process_input()
# print(add_info)
def del_process(filename):
    del_website = input('please input the website that you want to delete.')
    filename.seek(0)
    del_list = filename.readlines()#把文件所有值输入到临时列表里
    if 'backend %s
'%del_website not in del_list:#判断输入值是否在文件里
        print('the website do not exist or wrong input.')
    else:
        del_index =del_list.index('backend %s
'%del_website)#提取要删除对象的index
        del del_list[del_index]#删除backend website
        del del_list[del_index]#删除所含内容
        filename.seek(0)
        filename.truncate(0)#清空文件
        for d in del_list:#将列表的值写入文件
            filename.write(d)
        info_message(delete)
        print('33[32;1m successfully deleted32[31')
#主程序部分
with open("haproxy", "a+", encoding="utf-8") as file_haproxy: # a+模式打开haproxy文件     file_haproxy.seek(0)
    while True:
        dict_file = {}
        file_haproxy.seek(0)
        for line in file_haproxy:
            if line.startswith('backend'):
                dict_file[line.strip().split()[1]] = file_haproxy.readline().strip()
        print('please input choose the option.'.center(50,'*'))
        choice = input('1.search
2.add
3.delete
4.quit
>>:')

        if choice == '1':
            search_process()
            continue_process()

        elif choice == '2':
            add_info = add_process_input()
            if add_info == 'continue':
                continue
            print(add_info)
            file_haproxy.write(add_info)
            file_haproxy.flush()
            continue_process()
        elif choice == '3':
            re = del_process(file_haproxy)
            continue_process()

        elif choice == '4':
            exit()

结果


经过测试程序正常运行,不想贴了。

原文地址:https://www.cnblogs.com/negu/p/11372527.html