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()

  

时间: 2024-12-22 21:30:08

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

1 安装及添加文件到仓库

1.安装Git(Linux) Git是分布式版本管理系统.系统为ubuntu16.03,bash中输入git看是否已经安装: [email protected]:~$ git 程序"git"尚未安装. 您可以使用以下命令安装: sudo apt install git 安装后: [email protected]:~$ git usage: git [--version] [--help] [-C <path>] [-c name=value] [--exec-path[=

浏览器扩展系列————给MSTHML添加内置脚本对象【包括自定义事件】

原文:浏览器扩展系列----给MSTHML添加内置脚本对象[包括自定义事件] 使用场合: 在程序中使用WebBrowser或相关的控件如:axWebBrowser等.打开本地的html文件时,可以在html的脚本中使用自己在.net中定义的类,实现与Internet Explorer server的互操作.此外也可以在充分利用html在设计界面方面高效,简单的同时,也可以实现一些复杂的特性. 实现: Code Code highlighting produced by Actipro CodeH

python自定义查找文件内容

#!/usr/bin/env python#coding:utf8#此脚本为查找递归目录下所有文件匹配的内容 import os,sys,tab def paths(path):        list_path=os.walk(path)        all_file=[]        for p,d,fl in list_path:                for f in fl:                        pfile=os.path.join(p,f)    

研究MapReduce源码之实现自定义LineRecordReader完成多行读取文件内容

TextInputFormat是Hadoop默认的数据输入格式,但是它只能一行一行的读记录,如果要读取多行怎么办? 很简单 自己写一个输入格式,然后写一个对应的Recordreader就可以了,但是要实现确不是这么简单的 首先看看TextInputFormat是怎么实现一行一行读取的 大家看一看源码 public class TextInputFormat extends FileInputFormat<LongWritable, Text> { @Override public Record

[How to]如何自定义plist文件和读取plist文件内容

1.简介 plist作为IOS的固化文件,就好比java中properties文件,但是在IOS中plist是可读写的. 本文将介绍自定义静态的plist文件. 2.自定义静态plist文件 右击你的目的文件夹,然后选择[New File....]进行如下选择: 我们创建了一个goods的plist文件,它的默认内容是: 我们预计他是包含一个团购的cell内容,包含上平图片.名称.价格和当前购买人数 他是一个以数组,元素为字典类型,字典中以保存图片.名称.价格和当前购买人数信息: 可以如下定义:

替换APK文件内容后重新打包签名脚本

由于业务需求,需要替换APK文件内容后重新打包签名,调研后发现使用JDK里提供的命令可以很方便地实现.关键命令如下: jar -uf:替换apk文件内的某个文件或文件夹. jarsigner:为apk文件签名 zipalign:对签名后的apk文件进行字节对齐优化 下面以替换某apk包中assets目录下的1.ini和2.ini文件,并重新打包签名优化为例,先放上脚本代码: start.bat(windows版本) SET KEYSTORE_NAME=.\data\signature.keyst

Python3 写的远程批量修改文件内容的脚本

一.说明: 1.利用Python的paramiko模块,调用远程的shell命令去修改相应文件. 2.有一个专用配置文件,列出服务器清单. 3.Python循环读取配置文件的服务器IP去连接它,并执行相应的命令. 4.主要是有一个正则,匹配Zabbix agent中的IP设置. [[email protected] ~]# sed -i 's/^Server=[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/Server=33.66.88.99/g' zabbix_agentd.co

Linux中统计,检索和过滤文件内容的命令以及压缩、归档命令(wc,grep,gzip,bzip2,

统计文件内容wc命令 用途: 统计文件中单词数量(Word Count)等信息wc [选项]... 目标文件...常用命令选项-l:统计行数-w:统计单词个数-c:统计字节数 检索和过滤文件内容grep命令 用途: 在文件中查找并显示包含指定字符串的行grep [选项]... 查找条件 目标文件常用命令选项-i:查看时忽略大小写-v:反转查找,输出与查看条件不相符的行查找条件设置要查找的字符串以双引号括起来"^......" 表示以......开头, "......$ &qu

Shell脚本实现乱序排列文件内容的多种方法(洗牌问题)

洗牌问题:洗一副扑克,有什么好办法?既能洗得均匀,又能洗得快?即相对于一个文件来说怎样高效率的实现乱序排列? ChinaUnix 确实是 Shell 高手云集的地方,只要你想得到的问题,到那里基本上都能找到答案.r2007给出了一个取巧的方法,利用 Shell 的 $RANDOM 变量给原文件的每一行加上随机的行号然后根据这个随机行号进行排序,再把临时加上去的行号给过滤掉,这样操作之后得到的新文件就相当于被随机“洗”了一次: while read i;do echo "$i $RANDOM&qu