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 ...
随机推荐
- maven pom 引入本地jar包
maven pom 引入本地jar包 在pom.xml同级目录下新建lib文件夹,并放入本地jar包. 配置Jar包的dependency,包括groupId,artifactId,version三个 ...
- July 10th, 2018. Tuesday, Week 28th
Winning isn't everything, but wanting it is. 胜利并不能代表一切,但求胜心可以. From Arnold Palmer. Compared to this ...
- 部署远程jupyter
1.直接执行 pip3 install jupyter 2.无法执行jupyter notebook后报错 “jupyter:command not found” 3.找到安装的位置,一般都在pyth ...
- JAVA_OPTS设置
AVA_OPTS ,顾名思义,是用来设置JVM相关运行参数的变量. JVM:JAVA_OPTS="-server -Xms2048m -Xmx2048m -Xss512k" -se ...
- pgsql sql 统计整理
字符字段转整型查询: SELECT mon_id as staTime,SUM (CAST ( index_value AS INT )) AS totalCount FROM aidata.rep_ ...
- 【js】项目中有关时间的问题
一.时间戳 简单讲,unix时间戳就是从1970-01-01开始所经过的秒数,什么时候获取时间戳,就是到那个时间点所经历的秒数. 二.JavaScript获取时间戳 根据时间戳的定义,可以使用java ...
- 【jframe】Java架构师之路 - 第01篇:Get Started
jframe是什么? jframe是一个基于MIT协议开源的java web应用程序框架,汇聚了我们团队之于java web应用程序的核心架构思想以及大量最佳实践,并且持续在实际项目中不断完善优化. ...
- [Inside HotSpot] Visual Studio2017编译调试openjdk12
编译 下载并编译好freetype,然后安装cygwin并安装必要工具: autoconf make zip unzip 当前目录效果为: 然后cygwin打开,进入openjdk12目录输入命令进行 ...
- [Swift]LeetCode1034.边框着色 | Coloring A Border
Given a 2-dimensional grid of integers, each value in the grid represents the color of the grid squa ...
- 基于vue-cli构建vue-router的入门级demo
前言 本案列仅针对刚刚入门vue学习的伙伴,博主也是刚刚在学基于vue-cli搭建脚手架项目,对于前端大牛,可以移步. 快速搭建vue-cli环境 如何搭建基于vue-cli项目,这里不再叙述,如果不 ...