python 文件内容解析对比(一)

需求:需要对现网三千多台服务器的配置进行相同路径下的域名,证书,及插件的内容对比,输出一版不同版本数据到表中

文件内容对比这块选用了md5加密来校验对比内容,因为md5一种被广泛使用的密码散列函数,可以产生出一个散列值,用于确保信息传输完整一致

以下是用来校验lua插件信息的python脚本

import os
import json
from os import path
import hashlib

# md5加密校验
def md5sum(filename):
    with open(filename, "r") as f:
        fcont = f.read()
        fmd5 = hashlib.md5(fcont.encode())
        print(fmd5)
        return fmd5.hexdigest()
# 文件递归校验函数
def dir_file(wj_url):
    file = os.listdir(wj_url)
    for g in file:
        rel_url = path.join(wj_url, g)
        if path.isfile(rel_url):
            if wj_url.endswith('.lua'):
                path.abspath(rel_url)
        elif path.isdir(rel_url):
            dir_file(rel_url)
        return rel_url

def scaner_file(url):
    l = []
    file = os.listdir(url)
    for f in file:
        real_url = path.join(url, f)
        re_url = os.listdir(real_url)
        for i in re_url:
            if i == 'trafficserver' or i == 'nginx':
                l_url = path.join(real_url, i)
                r_url = os.listdir(l_url)
                for lua in r_url:
                    if lua == 'lua':
                        lu_url = path.join(l_url, lua)
                        if path.isdir(lu_url):
                            lua_url = os.listdir(lu_url)
                            for wj in  lua_url:
                                wj_url = path.join(lu_url, wj)
                                # 如果是文件,则以绝度路径的方式输出
                                if path.isfile(wj_url):
                                    if wj_url.endswith('.lua'):

                                        l.append(path.abspath(wj_url))
                                elif path.isdir(wj_url):
                                    # 如果是目录,则是递归校验函数 scaner_file (url)进行多次
                                    l.append(dir_file(wj_url))

            else:
                continue

    return l
# 校验文件内容

def count_url(url):
    count_x = scaner_file(url)

    for i in count_x:
        if all([i]):
            if i.endswith('.lua'):
                cc = i.split('/')[5::]
                fuwuqi_url = '/{}'.format('/'.join(cc))
                # print(fuwuqi_url)
                with open('/home/hkxpz/ceshu/39.137.42.235.txt','r') as f:
                    jx_url= f.read()
                    jx_u = json.loads(jx_url)
                    for jx in jx_u:
                        if all([jx]):
                            if jx.endswith('.lua'):
                                cc = jx.split('/')[5::]
                                jxfw_url = '/{}'.format('/'.join(cc))
                                if jxfw_url == fuwuqi_url:
                                    if md5sum(jx) == md5sum(i):
                                        print('文件内容一致,文件名{}'.format(i))
                                    else:
                                        print('文件内容不一致,文件名{}'.format(i))

if __name__ == '__main__':
    count_url("/home/hkxpz/pg")

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值