获取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)