python3 haproxy配置文件操作练习
哈哈 老规矩 先来一个NLP第六条:咳咳!
六,重复旧的做法,只会得到旧的结果
做法有不同,结果才会有不同。
如果,你的事没有结果,改变你的做法。任何新的做法,都比旧的多一份成功的机会。
想明天比昨天更好,必须用与昨天不同的做法。
改变自己,别人才有可能改变。
世界上本来便是每样事物都在不停地改变中,不肯改变的便面临淘汰或失败的威胁。
因此只有不断地改变做法,才能保持与其他事物关系有理想状态。
“做法”是规条,目的是取得价值,实现信念。维持最有效果地规条,就是灵活地不断修正做法,才能保证取得价值,实现信念。
改变是所有进步的起点。
然后是今天的学习内容。。。也没干啥,最近有点飘还是沉不下心来,把以前的一个文件操作的作业给做了haproxy是啥,不知道。。。 然后还有个ATM机的作业,动不了手,得慢慢琢磨。草稿如下:
这是配置文件:
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 www.baidu.com
server 100.1.7.8 100.1.7.8 weight 20 maxconn 3000 backend www.4399.com
server 100.1.7.8 100.1.7.8 weight 20 maxconn 3000 backend www.7k7k.com
server 100.1.7.8 100.1.7.8 weight 29 maxconn 3080
这是草稿代码:
#!usr/bin/env/ python
# -*- coding:utf-8 -*-
# Author: XiaoFeng def print_list():
for index, i in enumerate(list1):
print(index, i) def search(): # 查
website = input("请输入您要查询的内容: (就输这个:www.oldboy.org)")
find_str = "backend {}".format(website) # format() 与{}配合使用
with open("config_test", "r", encoding="utf-8") as f:
for line in f:
if find_str == line.strip(): # strip()用来去除左右两端的字符,空格换行啥的
line = next(f)
while line.strip().startswith("server"): # startswith() 判断以啥开头
try:
print(line)
line = next(f)
except StopIteration:
break
break
else:
print("没得你要滴东西") def add(): # eval() 用来把字符转换成字典
arg = eval(input("请输入您要写入的内容:"
"例如:{'backend': 'www.4399.com',"
"'record': {'server': '100.1.7.8',"
"'weight': 20,"
"'maxconn': 3000}}").strip())
backend = "backend {}".format(arg["backend"])
record = arg["record"]
record_context = "server {0} {0} weight {1} maxconn {2}"\
.format(record["server"], record["weight"], record["maxconn"])
add_flag = True
with open("config_test", "r+", encoding="utf-8") as f:
for line in f:
if line.strip() == backend:
print("此网址已存在!")
add_flag = False
if add_flag: # 经过循环 文件指针已经在最下方了
f.write("\n{}".format(backend))
f.write("\n\t\t{}".format(record_context)) def update():
arg = eval(input("请输入您要写入的内容:"
"例如:{'backend': 'www.7k7k.com',"
"'record': {'server': '100.1.7.8',"
"'weight': 20,"
"'maxconn': 3000}}").strip())
backend = "backend {}".format(arg["backend"])
record = arg["record"]
record_context = "server {0} {0} weight {1} maxconn {2}" \
.format(record["server"], record["weight"], record["maxconn"]) update_flag = False
reupdate_flag = False
with open("config_test", "r", encoding="utf-8") as f, \
open("config_test_bak", "w", encoding="utf-8") as f1:
for line in f:
if line.strip() == backend:
update_flag = True
continue
if line.strip().startswith("backend") and backend != line.strip():
update_flag = False
if not update_flag:
f1.write(line)
if update_flag and not reupdate_flag:
f1.write(backend)
f1.write("\n\t\t{}".format(record_context))
reupdate_flag = True
with open("config_test", "w", encoding="utf-8") as f, \
open("config_test_bak", "r", encoding="utf-8") as f1:
for line in f1:
f.write(line) def delete(): # 删
arg = input("请输入您要删除的内容:"
"例如:www.4399.com").strip()
delet_flage = False
with open("config_test", "r", encoding="utf-8") as f,\
open("config_test_bak", "w", encoding="utf-8") as f1:
for line in f:
if "backend {}".format(arg) == line.strip():
print(line)
delet_flage = True
continue
if line.strip().startswith("backend") and "backend {}".format(arg) != line.strip():
delet_flage = False
if not delet_flage:
f1.write(line)
with open("config_test", "w", encoding="utf-8") as f, \
open("config_test_bak", "r", encoding="utf-8") as f1:
for line in f1:
f.write(line) def ifcontinue():
key = input("\033[41;1m还试不试??? 【y/n】\033[0m")
if key == "y":
pass
else:
exit() list1 = ["search", "add", "update", "delete", "quit"]
while True:
print("欢迎使用本草稿 哈哈哈".center(50, "-")) # center() 用来把字符串放中间
print_list()
choice = input("请输入操作选择:")
if choice == "":
search()
ifcontinue()
if choice == "":
add()
ifcontinue()
if choice == "":
update()
ifcontinue()
if choice == "":
delete()
ifcontinue()
if choice == "":
break
勉强实现功能,事实是很抠脚。。。 慢慢来吧唉
最后解决一个第一天留下来的问题,什么是环境变量,百度上说是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。
比如path,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找;
额 还是不是很理解。。。
python3 haproxy配置文件操作练习的更多相关文章
- python之haproxy配置文件操作(第三天)
作业: 对haproxy配置文件进行操作 要求: 对haproxy配置文件中backend下的server实现增删改查的功能 一.这个程序有二个版本 1. python2.7版本见haproxy_py ...
- python作业:HAproxy配置文件操作(第三周)
一.作业需求: 1. 根据用户输入输出对应的backend下的server信息 2. 可添加backend 和sever信息 3. 可修改backend 和sever信息 4. 可删除backend ...
- HAproxy配置文件操作
要求 1. 根据用户输入输出对应的backend下的server信息2. 可添加backend 和sever信息3. 可修改backend 和sever信息4. 可删除backend 和sever信息 ...
- 第三周作业HAproxy文件操作
#coding:utf-8 #Author:Mr Zhi """ HAproxy配置文件操作: 1. 根据用户输入输出对应的backend下的server信息 2. 可添 ...
- Python3.5 day3作业二:修改haproxy配置文件。
需求: 1.使python具体增删查的功能. haproxy的配置文件. global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 lo ...
- haproxy配置文件简单管理
版本:python3功能:对haproxy配置文件进行简单的查询.添加以及删除功能操作流程:1.根据提示选择相应的选项2.进入所选项后,根据提示写入相应的参数3.查询功能会返回查询结果,添加.删除以及 ...
- s12-day03-work01 python修改haproxy配置文件(初级版本)
#!/usr/local/env python3 ''' Author:@南非波波 Blog:http://www.cnblogs.com/songqingbo/ E-mail:qingbo.song ...
- haproxy 配置文件详解 之 综述
HAProxy 配置文件根据功能和用途,主要有5 个部分组成,但有些部分并不是必须的,可以根据需要选择相应的部分进行配置. 1.global 部分 用来设定全局配置参数,属于进程级的配置,通常和操作系 ...
- 配置文件操作(ini、cfg、xml、config等格式)
配置文件的格式主要有ini.xml.config等,现在对这些格式的配置文件的操作(C#)进行简单说明. INI配置文件操作 调用系统函数GetPrivateProfileString()和Write ...
随机推荐
- DataPipeline在大数据平台的数据流实践
文 | 吕鹏 DataPipeline架构师 进入大数据时代,实时作业有着越来越重要的地位.本文将从以下几个部分进行讲解DataPipeline在大数据平台的实时数据流实践. 一.企业级数据面临的主要 ...
- 聊聊2018.2的Scriptable Build Pipeline以及构建Assetbundle
0x00 前言 在这篇文章中,我们选择了过去几周Unity官方社区交流群以及UUG社区群中比较有代表性的几个问题,总结在这里和大家进行分享.主要涵盖了Scriptable Build Pipeline ...
- Linux下单机实现Zookeeper集群
安装配置JAVA开发环境 下载ZOOKEEPER zookeeper下载地址 在下载的zookeeper目录里创建3个文件,zk1,zk2,zk3,用于存放每个集群的数据文件. 并在三个目录下创建da ...
- .Net MVC+NPOI实现下载自定义的Word文档
我们浏览很多网站时都会看到下载文件的功能(图片.word文档等),好巧不巧的是贫道近日也遇到了这个问题,于是写一篇博客记录一下. 技术点:MVC.NPOI.Form表单. 具体如何实现,待贫道喝一口水 ...
- 后端MVC和前端MVVC关系详解
MVC 是后端的分层开发概念: MVVM是前端视图层的概念,主要关注于 视图层分离,也就是说:MVVM把前端的视图层,分为了 三部分 Model, View , VM ViewModel
- 特征提取方法: one-hot 和 TF-IDF
one-hot 和 TF-IDF是目前最为常见的用于提取文本特征的方法,本文主要介绍两种方法的思想以及优缺点. 1. one-hot 1.1 one-hot编码 什么是one-hot编码?one-ho ...
- 《深入理解Java虚拟机》-----第8章 虚拟机字节码执行引擎——Java高级开发必须懂的
概述 执行引擎是Java虚拟机最核心的组成部分之一.“虚拟机”是一个相对于“物理机”的概念 ,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器.硬件.指令集和操作系统层面上的,而 ...
- 《深入理解Java虚拟机》-----第7章 虚拟机类加载机制——Java高级开发必须懂的
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步. 7.1 概述 上一章我们了解了Class文件存储格式的具体细节,在Class文件中描述的各种信息,最终都需要 ...
- java~lombok里的Builder注解
lombok注解在java进行编译时进行代码的构建,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码,这对于JAVA开发人员是很重要的,在出现lombok之后,对象的创建工作更提供Bu ...
- Sentinel 流程分析
最近公司开始做新的项目.新项目准备用点新的技术.之前我们采用的是spring cloud的那一套.之前几个月看到阿里开始拥抱springcloud,推出好几个组件无缝兼容现有springcloud.我 ...