s11 day3 作业详细

想写好作业,老老实实的一步一步往下看...

raw_input 获取的用户输入是字符串

1
2
3
4
5
6
input_str = raw_input("请输入内容:")
 
#如:
#用户输入:123   则 input_str = "123"
#用户输入:hello 则 input_str = "hello"
#用户输入:{"k1":123, "k2": "wupeiqi"}   则 input_str = ' {"k1":123, "k2": "wupeiqi"} '

################# raw_input 获取到的输入都是字符串、字符串、字符串 !!!!!!! #################

因为raw_input 获取的是字符串,所以用户输入的 ' {"k1":123, "k2": "wupeiqi"} ' 不具有字典的特性,也就不能使用 dic['key'] 来获取值

如果想要将用户输入的内容转换下格式,

1
2
'{"k1":123, "k2": "wupeiqi"}'       字符串转换成字典类型
"[11,22,33,44]"                     字符串转换成列表类型

################# 当当当当,python的json模块可以搞搞搞 !!!!!!! #################

json模块

json模块的作用之一:根据字符串书写格式,将字符串自动转换成相应格式

1
2
3
4
5
6
7
8
import json
inp_str = "[11,22,33,44]"
inp_list = json.loads(inp_str) # 根据字符串书写格式,将字符串自动转换成 列表类型
  
  
inp_str = ' {"k1":123, "k2": "wupeiqi"} '  # 正确的输入      切记,内部必须是 双引号 !!!
#inp_str = " {'k1':123, 'k2': 'wupeiqi'}"   # 错误的输入
inp_dict = json.loads(inp_str) # 根据字符串书写格式,将字符串自动转换成 字典类型

学习json有什么用呢?本次作业可以用上哦!!!!!!!

作业实例:(谁要是再不清楚作业,看我下周带皮鞭去抽他...)

需求:

老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改,不再是以往的打开文件进行直接操作了。

现有ha配置文件如下:

 1 global       
 2         log 127.0.0.1 local2
 3         daemon
 4         maxconn 256
 5         log 127.0.0.1 local2 info
 6 defaults
 7         log global
 8         mode http
 9         timeout connect 5000ms
10         timeout client 50000ms
11         timeout server 50000ms
12         option  dontlognull
13 
14 listen stats :8888
15         stats enable
16         stats uri       /admin
17         stats auth      admin:1234
18 
19 frontend oldboy.org
20         bind 0.0.0.0:80
21         option httplog
22         option httpclose
23         option  forwardfor
24         log global
25         acl www hdr_reg(host) -i www.oldboy.org
26         use_backend www.oldboy.org if www
27 
28 backend www.oldboy.org
29         server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
30 
31 backend buy.oldboy.org
32         server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
33 
34 原配置文件如下
现有ha配置文件

 

PS:以下只是实例,有好的想法也是可以的!

 

输出:
    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 也删除掉。
 1 global       
 2         log 127.0.0.1 local2
 3         daemon
 4         maxconn 256
 5         log 127.0.0.1 local2 info
 6 defaults
 7         log global
 8         mode http
 9         timeout connect 5000ms
10         timeout client 50000ms
11         timeout server 50000ms
12         option  dontlognull
13 
14 listen stats :8888
15         stats enable
16         stats uri       /admin
17         stats auth      admin:1234
18 
19 frontend oldboy.org
20         bind 0.0.0.0:80
21         option httplog
22         option httpclose
23         option  forwardfor
24         log global
25         acl www hdr_reg(host) -i www.oldboy.org
26         use_backend www.oldboy.org if www
27 
28 backend www.oldboy.org
29         server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
30 
31 backend buy.oldboy.org
32         server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
原配置文件如下
posted @ 2016-05-01 11:29  Yared  阅读(111)  评论(0)    收藏  举报