Python Day2 (二)
字典的操作:
见连接:
http://www.cnblogs.com/alex3714/articles/5717620.html
第二天作业,修改haproxy配置文件。
程序练习
程序1: 实现简单的shell sed替换功能
程序2:修改haproxy配置文件
需求:
1、查
输入:www.oldboy.org
获取当前backend下的所有记录 2、新建
输入:
arg = {
'bakend': 'www.oldboy.org',
'record':{
'server': '100.1.7.9',
'weight': 20,
'maxconn': 30
}
} 3、删除
输入:
arg = {
'bakend': 'www.oldboy.org',
'record':{
'server': '100.1.7.9',
'weight': 20,
'maxconn': 30
}
} 需求
需求
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 open_file = 'haproxy.py'
tempfile = '临时.txt' def file_change():
os.remove(open_file)
os.renames(tempfile,open_file) def search():
"""查询 proxy 配置文件的 server 内容"""
check = input("请输入要查询的域名:")
dir = eval(check)
server_name = dir['backend']
flag = False
list = []
with open(open_file,'r',encoding='utf-8') as file_read:
for line in file_read:
if line.startswith("backend") and server_name in line:
flag = True
continue
if line.startswith("backend"):
break
if flag:
list.append(line.strip())
print("查询结果如下".center(47,'='))
for i in list:
print(i) def add_server():
"""添加的内容默认以字典形式"""
add_server = input("请输入要添加的内容,示例 { }:")
#示例添加的字典如:{"backend":"oldboy","record":{"server":'192.168.85.188',"weight":2222,"maxconn":3333}}
dic = eval(add_server)
#print(type(dic))
server_name = dic['backend']
record = dic['record']
list = 'server %s %s weight %s maxconn %s\n' % (record['server'],record['server'],record['weight'],record['maxconn'])
print(list.rjust(70," "))
with open(open_file,'r+',encoding='utf-8') as f_read,open(tempfile,'w',encoding='utf-8') as f_write:
for line in f_read:
if line.startswith("backend") and server_name in line:
f_write.write(line)
f_write.write(list.rjust(70," "))
continue
f_write.write(line)
f_read.flush()
file_change() def del_server():
del_server = input("请输入要删除的server信息,实例 { } :")
dic = eval(del_server)
server_name = dic['backend']
server_liset = dic['record']
server = server_liset["server"]
with open(open_file,'r',encoding='utf-8') as f_read,open(tempfile,'w',encoding='utf-8') as f_write:
for line in f_read:
if line.lstrip().startswith("server") and server in line:
continue
f_write.write(line) file_change() def main():
""" 主函数 """
msg = '''
1,search:查询
2,add :添加
3.del :删除'''
print(msg)
add = input("请选择上述所对应的序号:")
if int(add) == 1:
search()
if int(add) == 2:
add_server()
if int(add) == 3:
del_server()
if __name__ == '__main__':
main()
小程序脚本
脚本还有待进一步改进。如有建议,请留言哈。
以后整理
Python Day2 (二)的更多相关文章
- python day2:python的基本数据类型及其方法
目录 python day2 1. 编码转换 2. python的基本数据类型 3. for 迭代遍历 4. 列表list 5. 元组tuple 6. 字典dict 7. 枚举enumerate 8. ...
- Python 基础 二
Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...
- 初学Python(二)——数组
初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- 有关python下二维码识别用法及识别率对比分析
最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- 从Scratch到Python——Python生成二维码
# Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...
- 用python生成二维码
Python生成二维码,可以使用qrcode模块, github地址 我是搬运工 首先安装, 因为打算生成好再展示出来,所以用到Pillow模块 pip install qrcode pip inst ...
- Python 实现二维码生成和识别
今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...
- Python - 模块(二)
目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...
随机推荐
- TensorRT&Sample&Python[introductory_parser_samples]
本文是基于TensorRT 5.0.2基础上,关于其内部的introductory_parser_samples例子的分析和介绍. 1 引言 假设当前路径为: TensorRT-5.0.2.6/sam ...
- OCR技术浅析-tesserOCR(3)
tesserOCR使用 tesserOCR是文字识别软件(惠普公司开源) Optical Character Recognition (OCR)即光学字符辨识是把打印文本转换成一个数字表示的过程.它有 ...
- iview 无法缓存的问题
- PS外挂滤镜调出清晰对比照片
最终效果 一.打开原图. 二.我们使用类似第一部分的相同方法,但设置上略有不同,我们将光线放在不同的地方.复制底层,执行滤镜-LUCIS ART水彩滤镜-LUCISART 选择 雕刻 设置参数为25. ...
- Python exe2shellcode,shellcode2exe
exe2shellcode #! /usr/bin/env python # -*- coding: utf-8 -*- import os import sys def payload(files) ...
- SpringBoot2.0的CacheManager配置
http://rickgong.iteye.com/blog/2414263 @Configurationpublic class RedisConfig extends CachingConfigu ...
- python中socket、进程、线程、协程、池的创建方式和应用场景
进程 场景 利用多核.高计算型的程序.启动数量有限 进程是计算机中最小的资源分配单位 进程和线程是包含关系 每个进程中都至少有一条线程 可以利用多核,数据隔离 创建 销毁 切换 时间开销都比较大 随着 ...
- 【BZOJ5502】[GXOI/GZOI2019]与或和(单调栈)
[BZOJ5502][GXOI/GZOI2019]与或和(单调栈) 题面 BZOJ 洛谷 题解 看到位运算就直接拆位,于是问题变成了求有多少个全\(0\)子矩阵和有多少个全\(1\)子矩阵. 这两个操 ...
- js侧边菜单
目标 实现一个侧边栏菜单,最多二级,可以收起展开.用于系统左侧的主菜单. 大多数系统都会有这样的菜单,用于导航功能,切换到不同的操作页面.在单页应用系统中,菜单一般是固定在左侧,分组节点上配图标,高亮 ...
- Docker容器进入的4种方式
Docker容器进入的4种方式 $ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash 在使用Docker创建了容器之后,大家比较 ...