博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sed程序
阅读量:4546 次
发布时间:2019-06-08

本文共 7701 字,大约阅读时间需要 25 分钟。

程序1: 实现简单的shell sed替换功能

程序2:修改haproxy配置文件 

1 1、查 2     输入:www.oldboy.org 3     获取当前backend下的所有记录 4  5 2、新建 6     输入: 7         arg = { 8             'bakend': 'www.oldboy.org', 9             'record':{10                 'server': '100.1.7.9',11                 'weight': 20,12                 'maxconn': 3013             }14         }15 16 3、删除17     输入:18         arg = {19             'bakend': 'www.oldboy.org',20             'record':{21                 'server': '100.1.7.9',22                 'weight': 20,23                 'maxconn': 3024             }25         }26 27 需求
View Code
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 5000ms10         timeout client 50000ms11         timeout server 50000ms12         option  dontlognull13 14 listen stats :888815         stats enable16         stats uri       /admin17         stats auth      admin:123418 19 frontend oldboy.org20         bind 0.0.0.0:8021         option httplog22         option httpclose23         option  forwardfor24         log global25         acl www hdr_reg(host) -i www.oldboy.org26         use_backend www.oldboy.org if www27 28 backend www.oldboy.org29         server 100.1.7.9 100.1.7.9 weight 20 maxconn 300030 31 原配置文件
View Code

 

1 #_*_coding:utf-8_*_  2 import os  3 def file_handle(filename,backend_data,record_list=None,type='fetch'): #type:fetch append change  4     new_file=filename+'_new'  5     bak_file=filename+'_bak'  6     if type == 'fetch':  7         r_list = []  8         with open(filename, 'r') as f:  9             tag = False 10             for line in f: 11                 if line.strip() == backend_data: 12                     tag = True 13                     continue 14                 if tag and line.startswith('backend'): 15                     break 16                 if tag and line: 17                     r_list.append(line.strip()) 18             for line in r_list: 19                 print(line) 20             return r_list 21     elif type == 'append': 22         with open(filename, 'r') as read_file, \ 23                 open(new_file, 'w') as write_file: 24             for r_line in read_file: 25                 write_file.write(r_line) 26  27             for new_line in record_list: 28                 if new_line.startswith('backend'): 29                     write_file.write(new_line + '\n') 30                 else: 31                     write_file.write("%s%s\n" % (' ' * 8, new_line)) 32         os.rename(filename, bak_file) 33         os.rename(new_file, filename) 34         os.remove(bak_file) 35     elif type == 'change': 36         with open(filename, 'r') as read_file, \ 37                 open(new_file, 'w') as write_file: 38             tag=False 39             has_write=False 40             for r_line in read_file: 41                 if r_line.strip() == backend_data: 42                     tag=True 43                     continue 44                 if tag and r_line.startswith('backend'): 45                     tag=False 46                 if not tag: 47                     write_file.write(r_line) 48                 else: 49                     if not has_write: 50                         for new_line in record_list: 51                             if new_line.startswith('backend'): 52                                 write_file.write(new_line+'\n') 53                             else: 54                                 write_file.write('%s%s\n' %(' '*8,new_line)) 55                         has_write=True 56         os.rename(filename, bak_file) 57         os.rename(new_file, filename) 58         os.remove(bak_file) 59  60  61 def fetch(data): 62     backend_data="backend %s" %data 63     return file_handle('haproxy.conf',backend_data,type='fetch') 64 def add(data): 65     backend=data['backend'] 66     record_list=fetch(backend) 67     current_record="server %s %s weight %s maxconn %s" %(data['record']['server'],\ 68                                                          data['record']['server'],\ 69                                                          data['record']['weight'],\ 70                                                          data['record']['maxconn']) 71     backend_data="backend %s" %backend 72  73     if not record_list: 74         record_list.append(backend_data) 75         record_list.append(current_record) 76         file_handle('haproxy.conf',backend_data,record_list,type='append') 77     else: 78         record_list.insert(0,backend_data) 79         if current_record not in record_list: 80             record_list.append(current_record) 81         file_handle('haproxy.conf',backend_data,record_list,type='change') 82 def remove(data): 83     backend=data['backend'] 84     record_list=fetch(backend) 85     current_record="server %s %s weight %s maxconn %s" %(data['record']['server'],\ 86                                                          data['record']['server'],\ 87                                                          data['record']['weight'],\ 88                                                          data['record']['maxconn']) 89     backend_data = "backend %s" % backend 90     if not record_list or current_record not in record_list: 91         print('\033[33;1m无此条记录\033[0m') 92         return 93     else: 94         #处理record_list 95         record_list.insert(0,backend_data) 96         record_list.remove(current_record) 97         file_handle('haproxy.conf',backend_data,record_list,type='change') 98 def change(data): 99     backend=data[0]['backend']100     record_list=fetch(backend)101 102     old_record="server %s %s weight %s maxconn %s" %(data[0]['record']['server'],\103                                                          data[0]['record']['server'],\104                                                          data[0]['record']['weight'],\105                                                          data[0]['record']['maxconn'])106 107     new_record = "server %s %s weight %s maxconn %s" % (data[1]['record']['server'], \108                                                         data[1]['record']['server'], \109                                                         data[1]['record']['weight'], \110                                                         data[1]['record']['maxconn'])111     backend_data="backend %s" %backend112 113     if not record_list or old_record not in record_list:114         print('\033[33;1m无此内容\033[0m')115         return116     else:117         record_list.insert(0,backend_data)118         index=record_list.index(old_record)119         record_list[index]=new_record120         file_handle('haproxy.conf',backend_data,record_list,type='change')121 122 123 if __name__ == '__main__':124     msg='''125     1:查询126     2:添加127     3:删除128     4:修改129     5:退出130     '''131     menu_dic={132         '1':fetch,133         '2':add,134         '3':remove,135         '4':change,136         '5':exit,137     }138     while True:139         print(msg)140         choice=input("操作>>: ").strip()141         if len(choice) == 0 or choice not in menu_dic:continue142         if choice == '5':break143 144         data=input("数据>>: ").strip()145 146         #menu_dic[choice](data)==fetch(data)147         if choice != '1':148             data=eval(data)149         menu_dic[choice](data) #add(data)150 151 152 153 154 # [{'backend':'www.oldboy20.org','record':{'server':'2.2.2.3','weight':20,'maxconn':3000}},{'backend':'www.oldboy10.org','record':{'server':'10.10.0.10','weight':9999,'maxconn':33333333333}}]

 

转载于:https://www.cnblogs.com/wangmo/p/6039096.html

你可能感兴趣的文章
常见的内存使用不当的情况
查看>>
国外搜索引擎+视频网站
查看>>
又开始写博客了
查看>>
day_7:代理使用
查看>>
mac 下 brew 安装 wine
查看>>
Kubernetes-v1.12.0基于kubeadm部署
查看>>
返回一个整数数组最大子数组的和
查看>>
Java System 类详解 - in, out, err
查看>>
BMP 储存个人理解
查看>>
机器人技术课堂笔记-zjj2016.11.10
查看>>
HTMl5的sessionStorage和localStorage(转)
查看>>
网络是怎样连接的-路由器的包转发操作(上)
查看>>
WPF - EventSetter
查看>>
Superblock mount time is in the future(转载)
查看>>
.Net开源框架列表
查看>>
hadoop 基础, HDFS(块, 元数据)
查看>>
RabbitMQ学习之集群部署
查看>>
Codeforces 1109D. Sasha and Interesting Fact from Graph Theory
查看>>
ASP.NET的URL过滤
查看>>
自己写的Web服务器
查看>>