获取SVN 用户,群组变更信息并生成日志

获取SVN 用户,群组变更信息并生成日志

最近需要获取SVN用户新增,删除。以及版本库变更记录。写了两段脚本做个记录 首先从svn服务器段拷贝groups.conf,htpasswd两个文件作为备份文件,主要思路是通过python文件比对,生成日志信息

获取群组变更信息并生成日志

// An highlighted block
import linecache
import time
import sys, os
import shutil
import getpass
//svn服务器地址
file1="D:/Repositories/groups.conf"
//备份地址
file2="D:/compare/groups.conf"

# 获取登录用户名
checkuser = getpass.getuser()

# 获取当前时间
def nowtime():
    localtime = time.localtime()
    time1 = time.strftime("%Y-%m-%d", localtime)
    return time1


def notHave(rlist1, rlist2):
    list = []
    for i in rlist2:
        if '=' in i:
            list.append(i)
        elif i in rlist1:
            pass
        else:
            list.append(i)
    return list


# 将输出写入日志文件
def make_print_to_file(path='./'):
    class Logger(object):
        def __init__(self, filename="Default.log", path="./"):
            self.terminal = sys.stdout
            self.log = open(os.path.join(path, filename), "a", encoding='utf8', )

        def write(self, message):
            self.terminal.write(message)
            self.log.write(message)

        def flush(self):
            pass

    fileName = 'GroupUpdate.log'
    sys.stdout = Logger(fileName, path=path)
    print(18 * '*' + nowtime() + ' ' + fileName + 18 * '*')


if __name__ == '__main__':

    make_print_to_file(path='D:/compare')
    for i in range(11, 55):
        file1_line = linecache.getline(file1, i)
        file2_line = linecache.getline(file2, i)

        if file1_line == file2_line:
            pass
        else:
            # 将字符串中=用,号代替
            file1_line = file1_line.replace('=', ',')
            file2_line = file2_line.replace('=', ',')
            # 将字符串生成列表
            onelist1 = str(file1_line).split(',')
            onelist2 = str(file2_line).split(',')
            # 去掉最后的\n换行符
            onelist1[-1] = onelist1[-1].strip()
            onelist2[-1] = onelist2[-1].strip()

            if notHave(onelist2, onelist1):
                print(onelist1[0],checkuser,"add:", notHave(onelist2, onelist1))
            else:
                pass

            if notHave(onelist1, onelist2):
                print(onelist2[0], checkuser,"delete:", notHave(onelist1, onelist2))
            else:
                pass

            shutil.copy(file1, file2)

获取用户变更信息并生成日志


import re
import time
import socket
import getpass
import datetime
import os
import sys
import shutil

# 获取登录用户名
checkuser = getpass.getuser()

list1=[]
list2=[]
//SVN服务器地址
file1="D:/Repositories/htpasswd"
//备份地址
file2="D:/compare/htpasswd"

# 获取当前时间
def nowtime():
    localtime = time.localtime()
    time1 = time.strftime("%Y-%m-%d", localtime)
    # print(time1)
    return time1
reStr="\\s"
# 读取文件内容
def read(file):
    list=[]
    fo = open(file, "r")
    for line in fo:
        strinfo=re.compile(reStr)
        line = strinfo.sub('',line)
        list.append(line)
    fo.close()
    return list

def notHava(rlist1,rlist2):
    list=[]
    for i in rlist1:
        if i in rlist2:
            pass
        else:
            list.append(i)
    return list

def printFile(str,list):
    print(nowtime(),checkuser,str)
    for i in list:
        print(i)

# 将输出写入日志文件
def make_print_to_file(path='./'):
    class Logger(object):
        def __init__(self, filename="Default.log", path="./"):
            self.terminal = sys.stdout
            self.log = open(os.path.join(path, filename), "a", encoding='utf8', )

        def write(self, message):
            self.terminal.write(message)
            self.log.write(message)

        def flush(self):
            pass

    fileName = 'UserUpdata.log'
    sys.stdout = Logger(fileName, path=path)

    print(fileName.center(60, '*'))


if __name__ == "__main__":
    list1=read(file1)
    list2=read(file2)
    endList1=notHava(list1,list2)
    endList2=notHava(list2,list1)
    if list1 == list2:
        pass
    else:
        make_print_to_file(path='D:/Users/Desktop/')
        # printFile("1中有2中没有的新增账号:",endList1)
        if endList1:
            printFile("add:", endList1)
        else:
            pass
        # print(type(endList1))
        # printFile("1中没有有2中有的删除账号:",endList2)
        if endList2:
            printFile("delete:", endList2)
        else:
            pass

        # 拷贝日志
        shutil.copy(file1, file2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值