python---haproxy---文件操作
haproxy 文件操作,操作属于简单操作,不复杂
# -*- coding:utf-8 -*-
# LC def search(*args): #查找Haproxy文件中的服务器
list1 = []
with open("haproxyfile","r") as f:
flag = False
for line in f:
if line.strip() == "backend %s" % args: #查找第一个以backend + 输入域名的起头的backend,将相关信息记录list中
flag = True
list1.append(line.strip())
continue #并继续循环,为了将backend下一行执行,即按着flag = True执行
if line.strip().startswith("backend") or line.strip() == "": #查到第二个backend这将flag置于Fasle,如果是空行,也将flag置于Fasle中,(防止文章末尾有多个空行)
flag = False
if flag:
list1.append(line.strip()) #将正确backend的后续信息继续记录至list中
return list1 def delete(string):
dict = eval(string)
backend = dict["backend"]
record = dict["record"]
new_file_list = []
if backend in domain_list(): #判读要删除的域名是否在文件内
with open("haproxyfile","r",encoding="utf-8") as f_read:
for line in f_read:
new_file_list.append(line) #读取文件的每行,将每行写入列表
if line.strip() == "backend %s" %backend: #如果有符合的backend,则将最近的写入列表弹出
new_file_list.pop()
if line.strip() == "server %s weight %s maxconn %s" %(record["server"],record["weight"],record["maxconn"]):#如果有符合的server信息,则将最近的写入列表弹出
new_file_list.pop()
with open("haproxyfile1", "a") as f_write: #将删除后的写入文件中
for line in new_file_list:
f_write.write(line)
else:
print("The Domain not in this file!") def add(string): #增加ha文件配置服务器信息
dict = eval(string)
backend = dict["backend"]
record = dict["record"]
with open("haproxyfile","a") as f_write:
f_write.write("backend %s\n"%backend)
f_write.write("\t\tserver %s %s weight %s maxconn %s"%(record["server"][0],record["server"][1],
record["weight"],
record["maxconn"])) def domain_list(): #将文件中所有的domain都摘出来
backend_name = []
with open("haproxyfile","r") as f_read:
for line in f_read:
if line.startswith("backend"):
domain_name = line.split()[1]
backend_name.append(domain_name)
return backend_name #域名信息查找
domain_search_name = input("Please input the domain your search:")
if domain_search_name in domain_list():
domain_info = search(domain_search_name)
print(domain_info) #域名信息删除 string = "{'backend': 'www.yst.com.cn','record':{'server':'1.1.1.1','weight': 30,'maxconn': 2300}}"
delete(string) #域名信息增加
string = "{'backend': 'www.yst.com.cn','record':{'server':'1.1.1.1','weight': 30,'maxconn': 2300}}"
add(string)
收集backend信息和对应server的信息
def backend_info():
with open("haproxyfile","r") as f_read:
backend_list = []
dict_all = {}
dict_ser = {}
server_list = []
for line in f_read:
if line.strip().startswith("backend"):
backend_name = line.split()[1]
backend_list.append(backend_name)
server_list = []
if line.strip().startswith("server"):
dict_ser['server'] = line.strip().split()[1]
dict_ser['weight'] = line.strip().split()[3]
dict_ser['maxconn'] = line.strip().split()[5]
server_list.append(dict_ser)
dict_all[backend_name] = server_list
return backend_list,dict_all #返回backend的所有域名信息和域名包含的服务器信息
python---haproxy---文件操作的更多相关文章
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- Python 常见文件操作的函数示例(转)
转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- 孤荷凌寒自学python第三十三天python的文件操作初识
孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- Python常见文件操作的函数示例
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
- python的文件操作及简单的用例
一.python的文件操作介绍 1.文件操作函数介绍 open() 打开一个文件 语法:open(file, mode='r', buffering=-1, encoding=None, errors ...
- python基本文件操作
python文件操作 python的文件操作相对于java复杂的IO流简单了好多,只要关心文件的读和写就行了 基本的文件操作 要注意的是,当不存在某路径的文件时,w,a模式会自动新建此文件夹,当读模式 ...
- [转]python file文件操作--内置对象open
python file文件操作--内置对象open 说明: 1. 函数功能打开一个文件,返回一个文件读写对象,然后可以对文件进行相应读写操作. 2. file参数表示的需要打开文件的相对路径(当前 ...
随机推荐
- 【设计模式】java设计模式总述及观察者模式
今天在准备腾讯的面试时想起来要复习一下设计模式,而刚好前几天在参加网易的在线考试的时候,也出了一道关于设计模式的选择题,主要是考察观察者模式,虽然那道题自己做对了,但觉得还是应该好好总结一下设计模式的 ...
- SpriteBuilder实现2D精灵光影明暗反射效果(二)
使用SpriteBuilder新建一个项目,将默认MainScene.ccb中的内容统统删掉,此时场景应该是一片漆黑. 将官网中的2张图片以及我自己做的2张图片全部拖拽到其文件视图中去: 其中加_n后 ...
- SVM及其c++代码运用实例
最近做个小东西,要用到SVM,搜索网上,发现大伙都是各种介绍理论,让我等小码农晕头转向,是故自己学习总结一下,并将代码实例展示出来,方便大家共同探讨,该代码是用opencv编写的,很容易学习滴. 1. ...
- 通用数据水平层级选择控件v0.70升级版使其支持jQuery v1.9.1
升级原因:作者原来脚本支持的jquery版本太低了,查找了下资料,使得它能支持最新版本的jquery 备注说明:脚本代码源作者跟源文出处很难找,只能在此特感谢他的分享. 更新部分: 1.新版本不再支持 ...
- Dynamics CRM2013 业务规则的新建、激活与删除
CRM2013的一个新的feature叫做业务规则,一些页面的简单的显示隐藏的控制.字段是否必填.有条件的锁定字段.错误提示等等,以前都是需要些脚本代码实现现在只需通过业务规则做一些简单的配置就可以达 ...
- Touch Handling in Cocos2D 3.x(四)
创建触摸生命周期 让我们改善我们的应用程序.如果玩家可以触摸屏幕并且拖放英雄到指定位置不是更好吗? 为了完成这个功能我们必须使用Cocos2d 3.0提供的所有的触摸事件: touchBegan:在用 ...
- (三十)PickerView文字和随机数的使用
PickerView用于展示供选择的内容(例如日期选取.点菜等). 有三种情况: 1.每一列都是独立的选取 2.右边的列受到左边列的影响 3.包含图片 PickerView和TableView类似,通 ...
- OpenCV导向滤波(引导滤波)实现(Guided Filter)代码,以及使用颜色先验算法去雾
论文下载地址:http://research.microsoft.com/en-us/um/people/jiansun/papers/GuidedFilter_ECCV10.pdf 本文主要介绍导向 ...
- Errors running builder 'Integrated External Tool Builder' on project xxx
出现这样的提示,表明你的项目的Builder项出了问题. 解决方法是: 右键项目选择"Properties",再选择"Builders",删除丢失的builde ...
- 色彩转换——RGB & HSV
RGB to HSV The R,G,B values are divided by 255 to change the range from 0..255 to 0..1: R' = R/255 G ...