Loading

对比Nginx配置文件差异

一、概要:

Python2 官方文档:https://docs.python.org/2/library/difflib.html

Python2 官方文档:https://docs.python.org/3/library/difflib.html

  当我们维护多个Nginx配置时,时常会对比不同版本配置文件的差异,是运维人员更佳清晰地了解不同版本迭代后的更新项,实现的思路读取两个需要对比的配置文件,再以换行符作为分隔符,调用difflib.HtmlDIff()生成HTML格式的差异文档。

二、代码实现

实现代码如下:

#!/usr/bin/env python

import difflib
import sys

try:
    textfile1=sys.argv[1]               #第一个配置文件路径参数
    textfile2=sys.argv[2]                #第二个配置文件路径参数
except Exception as e:
    print('Error:' +str(e))
    print("Usage: simple3.py filename1  filename2")
    sys.exit()

def readfile(filename):         #文件读取分割函数
    try:
        fileHandle = open(filename,'rt')
        text = fileHandle.read().splitlines()           #读取后以行进行分隔
        fileHandle.close()
        return text
    except IOError as error:
        print('Read file Error:'+ str(error))
        sys.exit()


if textfile1 == "" or textfile2=="":
    print("Usage: simple3.py filename1 filename2")
    sys.exit()


text1_lines = readfile(textfile1)     #调用readfile函数,获取分隔后的字符串
text2_lines = readfile(textfile2)

d = difflib.HtmlDiff()          #创建HtmlDiff()类对象
print(d.make_file(text1_lines,text2_lines))     #通过make_file方法输出HTML格式的对比结果

三、运行代码结果如下

[root@localhost diff_lib]# python3 simple3.py nginx.conf.v1 nginx.conf.v2 > diff2.html

生成html页面diff2.html

下图为:nginx.conf.v1与nginx.conf.v2配置文件对比结果

 

posted @ 2018-05-25 13:57  KubeSec  阅读(858)  评论(0编辑  收藏  举报