001_自定义过滤及添加文件内容脚本(nginx)

Posted arun_python

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了001_自定义过滤及添加文件内容脚本(nginx)相关的知识,希望对你有一定的参考价值。

一、工作中遇到sed添加及修改在nginx末尾添加太麻烦了

需求:随意查找添加一条以前不存在的内容加到"}"前一行

实现:

#!/usr/bin/env python
# coding=utf-8
import sys,os
from optparse import OptionParser

parse = OptionParser()
parse.add_option("-c", "--context", help="add one line contexts",default="xxxhtxxxtps_status")
parse.add_option("-f", "--file", help="modify file",default="/006_eleallproject/002_surveypro/001_nginxdevops/002_camel-agent-deploy/camel-agent-deploy2.0/nginx.conf")

(options, args) = parse.parse_args()
content = options.context
file = os.path.realpath(options.file)
#content="x$https_status"
#file=\'/006_eleallproject/002_surveypro/001_nginxdevops/002_camel-agent-deploy/camel-agent-deploy2.0/nginx.conf\'
print options


_list_content=[]
m = 0
count = 0
#获取"}"的位置
try:
    fh = open(file, \'rb\')
    for n in fh.readlines():
        m += 1
        if (n.find(\'}\') >= 0):
            global count
            count = m
            _list_content.append(n)
        else:
            _list_content.append(n)
finally:
    fh.close()


#在"}"位置前添加内容
n = 0
ngconf = open(file, \'rb\')
for s in ngconf.readlines():
    n += 1
    if s.find(\'}\') >= 0 and n >= count-1:
        #在以前的列表中有任何可以找到的内容都不会添加
        result = any([str(line.strip()).find(content) >=0  for line in  _list_content])
        if not result:
            _list_content.insert(count-1, content+"\\n")
ngconf.close()


#写入文件
end_nginx_f = open(file, \'wb\')
end_nginx_f.writelines(_list_content)
end_nginx_f.close()

  

以上是关于001_自定义过滤及添加文件内容脚本(nginx)的主要内容,如果未能解决你的问题,请参考以下文章

Nginx官方镜像私有化定制,实现时区同步及自动挂载配置文件到宿主机

自定义 Jekyll 插件(液体过滤器?)将脚本标签呈现为文本,而不是 JavaScript

django模板中的自定义过滤器

zabbix添加nginx监控

Django 找不到我的自定义模板过滤器

Django 自定义过滤器和模板标签