zoukankan      html  css  js  c++  java
  • python3 haproxy配置文件操作练习

    哈哈 老规矩 先来一个NLP第六条:咳咳!

    六,重复旧的做法,只会得到旧的结果

      做法有不同,结果才会有不同。

      如果,你的事没有结果,改变你的做法。任何新的做法,都比旧的多一份成功的机会。

      想明天比昨天更好,必须用与昨天不同的做法。

      改变自己,别人才有可能改变。

      世界上本来便是每样事物都在不停地改变中,不肯改变的便面临淘汰或失败的威胁。

      因此只有不断地改变做法,才能保持与其他事物关系有理想状态。

      “做法”是规条,目的是取得价值,实现信念。维持最有效果地规条,就是灵活地不断修正做法,才能保证取得价值,实现信念。

      改变是所有进步的起点。


    然后是今天的学习内容。。。也没干啥,最近有点飘还是沉不下心来,把以前的一个文件操作的作业给做了haproxy是啥,不知道。。。  然后还有个ATM机的作业,动不了手,得慢慢琢磨。草稿如下:

    这是配置文件:

     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 www.baidu.com
    32         server 100.1.7.8 100.1.7.8 weight 20 maxconn 3000
    33 
    34 backend www.4399.com
    35         server 100.1.7.8 100.1.7.8 weight 20 maxconn 3000
    36 
    37 backend www.7k7k.com
    38         server 100.1.7.8 100.1.7.8 weight 29 maxconn 3080
    View Code

    这是草稿代码:

      1 #!usr/bin/env/ python
      2 # -*- coding:utf-8 -*-
      3 # Author: XiaoFeng
      4 
      5 
      6 def print_list():
      7     for index, i in enumerate(list1):
      8         print(index, i)
      9 
     10 
     11 def search():  #
     12     website = input("请输入您要查询的内容: (就输这个:www.oldboy.org)")
     13     find_str = "backend {}".format(website)    # format()  与{}配合使用
     14     with open("config_test", "r", encoding="utf-8") as f:
     15         for line in f:
     16             if find_str == line.strip():   # strip()用来去除左右两端的字符,空格换行啥的
     17                 line = next(f)
     18                 while line.strip().startswith("server"):  # startswith() 判断以啥开头
     19                     try:
     20                         print(line)
     21                         line = next(f)
     22                     except StopIteration:
     23                         break
     24                 break
     25         else:
     26             print("没得你要滴东西")
     27 
     28 
     29 def add():    # eval() 用来把字符转换成字典
     30     arg = eval(input("请输入您要写入的内容:"
     31                      "例如:{'backend': 'www.4399.com',"
     32                      "'record': {'server': '100.1.7.8',"
     33                                 "'weight': 20,"
     34                                 "'maxconn': 3000}}").strip())
     35     backend = "backend {}".format(arg["backend"])
     36     record = arg["record"]
     37     record_context = "server {0} {0} weight {1} maxconn {2}"
     38         .format(record["server"], record["weight"], record["maxconn"])
     39     add_flag = True
     40     with open("config_test", "r+", encoding="utf-8") as f:
     41         for line in f:
     42             if line.strip() == backend:
     43                 print("此网址已存在!")
     44                 add_flag = False
     45         if add_flag:   # 经过循环 文件指针已经在最下方了
     46             f.write("
    {}".format(backend))
     47             f.write("
    		{}".format(record_context))
     48 
     49 
     50 def update():
     51     arg = eval(input("请输入您要写入的内容:"
     52                      "例如:{'backend': 'www.7k7k.com',"
     53                      "'record': {'server': '100.1.7.8',"
     54                      "'weight': 20,"
     55                      "'maxconn': 3000}}").strip())
     56     backend = "backend {}".format(arg["backend"])
     57     record = arg["record"]
     58     record_context = "server {0} {0} weight {1} maxconn {2}" 
     59         .format(record["server"], record["weight"], record["maxconn"])
     60 
     61     update_flag = False
     62     reupdate_flag = False
     63     with open("config_test", "r", encoding="utf-8") as f, 
     64             open("config_test_bak", "w", encoding="utf-8") as f1:
     65         for line in f:
     66             if line.strip() == backend:
     67                 update_flag = True
     68                 continue
     69             if line.strip().startswith("backend") and backend != line.strip():
     70                 update_flag = False
     71             if not update_flag:
     72                 f1.write(line)
     73             if update_flag and not reupdate_flag:
     74                 f1.write(backend)
     75                 f1.write("
    		{}".format(record_context))
     76                 reupdate_flag = True
     77     with open("config_test", "w", encoding="utf-8") as f, 
     78             open("config_test_bak", "r", encoding="utf-8") as f1:
     79         for line in f1:
     80             f.write(line)
     81 
     82 
     83 def delete():  #
     84     arg = input("请输入您要删除的内容:"
     85                      "例如:www.4399.com").strip()
     86     delet_flage = False
     87     with open("config_test", "r", encoding="utf-8") as f,
     88             open("config_test_bak", "w", encoding="utf-8") as f1:
     89         for line in f:
     90             if "backend {}".format(arg) == line.strip():
     91                 print(line)
     92                 delet_flage = True
     93                 continue
     94             if line.strip().startswith("backend") and "backend {}".format(arg) != line.strip():
     95                 delet_flage = False
     96             if not delet_flage:
     97                 f1.write(line)
     98     with open("config_test", "w", encoding="utf-8") as f, 
     99             open("config_test_bak", "r", encoding="utf-8") as f1:
    100         for line in f1:
    101             f.write(line)
    102 
    103 
    104 def ifcontinue():
    105     key = input("33[41;1m还试不试???  【y/n】33[0m")
    106     if key == "y":
    107         pass
    108     else:
    109         exit()
    110 
    111 
    112 
    113 
    114 list1 = ["search", "add", "update", "delete", "quit"]
    115 while True:
    116     print("欢迎使用本草稿 哈哈哈".center(50, "-"))   # center() 用来把字符串放中间
    117     print_list()
    118     choice = input("请输入操作选择:")
    119     if choice == "0":
    120         search()
    121         ifcontinue()
    122     if choice == "1":
    123         add()
    124         ifcontinue()
    125     if choice == "2":
    126         update()
    127         ifcontinue()
    128     if choice == "3":
    129         delete()
    130         ifcontinue()
    131     if choice == "4":
    132         break
    View Code

    勉强实现功能,事实是很抠脚。。。 慢慢来吧唉

     最后解决一个第一天留下来的问题,什么是环境变量,百度上说是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。

    比如path,是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找;

    额 还是不是很理解。。。

      

  • 相关阅读:
    ES6(二)
    ES6
    bootstrap
    数组对象
    bootstrap
    html5(二)
    css3转换、动画、布局
    整理的一些兼容写法
    css渐变、背景、过渡、分页
    css3(一)
  • 原文地址:https://www.cnblogs.com/xf1262048067/p/10634068.html
Copyright © 2011-2022 走看看