zoukankan      html  css  js  c++  java
  • 用python修改haproxy配置文件

    需求:

        当用户输入域名的时候,显示出来下面的记录

        当用户需要输入添加纪录的时候,添加到你需要的那个域名下面

        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  
                server 100.1.7.92 100.1.7.93 weight 20 maxconn 3000  
                server 100.1.7.94 100.1.7.93 weight 20 maxconn 3000  
          
        backend buy.oldboy.org  
                server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000  
    配置文件
      1 # !/usr/bin/env python
      2 # -*- coding:utf-8 -*-
      3 
      4 def select(arg):
      5     """
      6     要求用户输入域名,可以查看webserver的子作用域
      7     针对haproxy的配置文件
      8     思路:
      9     a.逐行读取文件
     10     b.当我遇到backend + 域名的行的时候,将其子作用域放到一个空列表显示给用户看
     11     c.再当我遇到以backend开头的时候就结束循环就ok了
     12     d.因为这个子作用域是需要显示 的,就要拿出来,所以要特别显示出来,要与众不同,所以我们在这里定义标志位来显示这个与众不同
     13     :param arg:
     14     :return:
     15     """
     16     result = []
     17     flag = False
     18     with open("haproxy.txt", "r", encoding="utf-8") as f:
     19         for line in f :
     20             if line.strip() == "backend %s" % arg:
     21                 flag = True
     22                 continue
     23             if line.strip().startswith("backend"):
     24                 flag  = False
     25             if flag:
     26                 result.append(line)
     27     return result
     28 ret = select("www.oldboy.org")
     29 
     30 for i in ret :
     31     print(i)
     32 #++++++++++++++++++++++++++++
     33 def sele_add(yuming, record):
     34     """
     35     增加:
     36     a.先查看有没有这个域名,如果没有在最后添加就可以了
     37     b.如果有,在检测有没有要和你相同的那个子作用域,
     38     c.如果有,则pass,如果没有就在最后一行添加
     39 
     40     方法一:
     41     a.查询webserver域名是用户要的那个域名
     42     b.把查询到的结果添加新纪录写入到新的文件中
     43     c.在继续把除了这个域名意外的作用域及其他内容写入到新文件中
     44     方法二:
     45     a.就是在下一个新的域名之前加入用户需要加入的新纪录
     46     #也可以理解为先插入那行在写backend
     47     b.在排除是否已经存在
     48     c.当伪代码已经写完的时候,肯定不能实现,所以我们得要修改代码,那么就需要用到标志位 因为只在当前域名后第一个backend
     49     前添加纪录,所以标志位在标记的时候需要 更改为数字
     50     :param arg:
     51     :return:
     52     """
     53 
     54     """
     55     biaozhiwei = False
     56     with open("haproxy.txt", "r", encoding="utf-8") as old, open("haproxy2.txt", "w", encoding="utf-8") as new:
     57         res_list = select(yuming)
     58         res_list.append(" "*8 + record + "
    ")
     59         for line in old:
     60             if line.strip() == "backend %s" % yuming:
     61                 biaozhiwei = True#注意
     62                 new.write(line)
     63                 for i in res_list:
     64                     new.write(i )
     65 
     66                 continue
     67             if line.strip().startswith("backend"):
     68                 biaozhiwei = False
     69             if not biaozhiwei:
     70                 new.write(line)
     71     """
     72 #No.2
     73 # 方法二:
     74 # a.就是在下一个新的域名之前加入用户需要加入的新纪录
     75 #也可以理解为先插入那行在写backend
     76 # b.在排除是否已经存在
     77 #----------------
     78 #判断域名是否存在,如果存在再次判断记录是否存在,如果存在,就pass,如果不存在就添加
     79     bzw = 2
     80     result = []
     81     a = 0
     82     with open ("haproxy.txt", "r", encoding="utf-8") as old , open("haproxy2.txt", "w", encoding="utf-8") as new:
     83         if ("backend %s" % yuming ) in old:
     84             print("cunz")
     85 
     86             for line in old:
     87 
     88                 if line.strip() == "backend %s" % yuming:
     89                     bzw = 0
     90                     result.append(line)
     91                     new.write(line)
     92                     continue
     93                 if line.strip().startswith("backend"):
     94                     bzw += 1   #因为我们会遇到很多个backend,所以就自加1 了
     95                     if bzw == 1:
     96                         if (" "*8 + record + "
    ") in result:
     97                             pass
     98                         else:
     99                             new.write(" "*8 + record + "
    ")
    100                 new.write(line)
    101         else:
    102             print("bucz")
    103             with open("haproxy.txt", "r", encoding="utf-8") as old, open("haproxy2.txt", "w", encoding="utf-8") as new:
    104                 for line in old:
    105                     new.write(line)
    106                 new.write("
    backend %s
    " % yuming)
    107                 new.write(" "*8 + record + "
    ")
    108 
    109 sele_add("www.oldboy.orgt","1233446")
  • 相关阅读:
    曾经写的一些文章,与技术无关,整理出来怀旧,:)
    在VS.NET2003中使用XHTML的插件HTML TIDY 及 MindManger
    把机器退出了域,造成无法启动 MSSQLSERVER ,晕
    hello php!
    今天又看了一下存储过程
    [转]PAGEII携手极速网爱情电影经典对白
    关键词:2005年,世乒赛.上海,乒乓的胜地
    一本SharePoint方面的书,Special Edition Using Microsoft® SharePoint Portal Server
    keo计划
    关于xp_cmdshell 。。注意安全!
  • 原文地址:https://www.cnblogs.com/renfanzi/p/5643690.html
Copyright © 2011-2022 走看看