哈哈 老规矩 先来一个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配置文件操作练习的更多相关文章

  1. python之haproxy配置文件操作(第三天)

    作业: 对haproxy配置文件进行操作 要求: 对haproxy配置文件中backend下的server实现增删改查的功能 一.这个程序有二个版本 1. python2.7版本见haproxy_py ...

  2. python作业:HAproxy配置文件操作(第三周)

    一.作业需求: 1. 根据用户输入输出对应的backend下的server信息 2. 可添加backend 和sever信息 3. 可修改backend 和sever信息 4. 可删除backend ...

  3. HAproxy配置文件操作

    要求 1. 根据用户输入输出对应的backend下的server信息2. 可添加backend 和sever信息3. 可修改backend 和sever信息4. 可删除backend 和sever信息 ...

  4. 第三周作业HAproxy文件操作

    #coding:utf-8 #Author:Mr Zhi """ HAproxy配置文件操作: 1. 根据用户输入输出对应的backend下的server信息 2. 可添 ...

  5. Python3.5 day3作业二:修改haproxy配置文件。

    需求: 1.使python具体增删查的功能. haproxy的配置文件. global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 lo ...

  6. haproxy配置文件简单管理

    版本:python3功能:对haproxy配置文件进行简单的查询.添加以及删除功能操作流程:1.根据提示选择相应的选项2.进入所选项后,根据提示写入相应的参数3.查询功能会返回查询结果,添加.删除以及 ...

  7. s12-day03-work01 python修改haproxy配置文件(初级版本)

    #!/usr/local/env python3 ''' Author:@南非波波 Blog:http://www.cnblogs.com/songqingbo/ E-mail:qingbo.song ...

  8. haproxy 配置文件详解 之 综述

    HAProxy 配置文件根据功能和用途,主要有5 个部分组成,但有些部分并不是必须的,可以根据需要选择相应的部分进行配置. 1.global 部分 用来设定全局配置参数,属于进程级的配置,通常和操作系 ...

  9. 配置文件操作(ini、cfg、xml、config等格式)

    配置文件的格式主要有ini.xml.config等,现在对这些格式的配置文件的操作(C#)进行简单说明. INI配置文件操作 调用系统函数GetPrivateProfileString()和Write ...

随机推荐

  1. Oracle数据库升级注意事项

    1 备份配置参数 数据库升级前的配置参数要备份,如PGA大小 这样数据库升级后还可以升级前的配置,而不至于使用安装升级时的默认配置 2 检查版本兼容 确认数据库升级后是否对生产环境上的代码有影响,如果 ...

  2. MySQL找不到msvcp140.dll”

    没有安装VC++2015(Microsoft Visual C++ 2015 Redistributable), 下载地址 点击download,一个64位的一个32位的.

  3. 阿里java编码规范考试总结

    前几天,考了阿里编码规范刚好80险过,总结出以下例题,答案有错,欢迎评论 1.关于方法的返回值是否可以为null,下列说法正确的是(BCD) A.方法的返回值可以为null,如果是集合,必须返回空集合 ...

  4. winfrom 改变图片透明度 Alpha

    效果图: 核心代码: /// <summary> /// 方法一 设置图像透明度 /// </summary> /// <param name="srcImag ...

  5. Java的设计模式

    一.什么是设计模式: 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了可重用代码.让代码更容易被他人理解.保证代码可靠性. ...

  6. Window10升级遇到大坑错误代码:0xc000000e完美解决方案

    昨天忽然升级了,然后并没有立即重启更新,因为但是正在工作所以等下班回到家后就是一直提示:文件:\Windows\system32\winload.efi 错误代码:0xc000000e!!! 如下图所 ...

  7. ABP学习笔记总汇

    首先立下一个目标,未来一段时间开始学习ABP. 先立一个flag.之后会再次更新目录和文章连接 目录 1.ABP学习笔记(1)-使用mysql

  8. Java并发-建立线程

    一.建立新的线程 Runnable r = () ->{ //线程所执行的逻辑代码 }; Thread thread = new Thread(r); thread.start(); 方法介绍 ...

  9. 第4章 简单的C程序设计——选择结构程序设计

    在顺序结构中,各语句是按自上而下的顺序执行的,执行完上一个语句就自动执行下一个语句,是无条件的,不必作任何判断.实际上,很多情况下,需要根据某个条件是否满足来决定是否执行指定的操作任务,或者从给定的两 ...

  10. Python:logging.NullHandler 的使用

    在使用 peewee 框架时,默认是不会出现日志消息的. from peewee import Model, CharField, DateTimeField, IntegerField from p ...