cvs日志统计

99 篇文章 0 订阅

最近给公司配置组的同事做了个日志分析统计的工具。

由于甲方对我们有要求,要每天统计每个人在cvs库上的操作,统计出某天某人提交了几个文件,删除了几个文件之类的。她们一开始找的是一个开源的cvs日志查看工具,是python写的一个cgi页面,执行效果大概如下图:

但是这个界面用起来不是很称心。使用不方便,且无统计功能等。于是她们找了我,希望我能按她们的要求进行修改。

于是乎,就花了一天时间给她们定制了个工具。当然继续用python,最大的优势是方便,而且跨平台(因为有很多个cvs配置库,有win,有linux,有I386,有X64)。不过不写成cgi的方式了,没意义。而是直接以脚本方式执行。

完成后,大概功能如下:

  1. 可以指定要查询的cvs账号,或者默认查询全部用户
  2. 可以排除要查询的cvs账号,如系统管理员cvsroot账号等
  3. 可以指定要统计的日期begin_date,end_date
  4. 可以指定要统计的操作类型,如Checkout,RTag,Update,Commit,Addition等
  5. 如果配置成crontab来执行,也可以指定脚本的统计周期,即:统计当天之前的n天数据
  6. 可以显示统计结果,每个账号在指定日期内某个操作所影响的文件数量
  7. 可以将统计详细结果保存成csv文件,里面包含详细的操作记录,并对csv文件进行zip压缩
  8. 可以配置邮件信息,将统计结果和详细操作记录文件发送到指定的电子邮箱。

这样,在完成该脚本后,她们可以配置个crontab,这样,就可以不用每天手动执行脚本了。她们每天只需要做的就是收一下邮件,看看邮件内容。如果发现有异常记录,再找相关的人员进行核实就可以了,极大的减轻了工作量。

在完成这个工具的过程中,遇到一个难题,在进行邮件发送的时候,老是提示认证不通过(smtplib.SMTPAuthenticationError: (535, ’5.7.0 authentication failed’) )。但是邮箱的配置是肯定正确的。

上网搜了不少的文章,感觉都是针对旧版本的python的,而我用的是2.7版本。因为有些文章说要改某某源码,我检查python源码后,发现源码早已不是那样了。

最后,发现可以改smtplib.py文件,将preferred_auths = [AUTH_CRAM_MD5, AUTH_PLAIN, AUTH_LOGIN] 改成 preferred_auths = [AUTH_LOGIN,AUTH_CRAM_MD5, AUTH_PLAIN]即可。因为有些esmtp服务器认证方式比较特殊,对AUTH_CRAM_MD5的支持好像有些问题。

再后来,认真研究了一下smtplib.py文件后,发现可以不用改这个文件的源码了,可以直接在代码里指定认证方式。代码如下:

smtp = smtplib.SMTP()
#set debug level .
#smtp.set_debuglevel(1)
smtp.connect(server)
#smtp.docmd( “EHLO server” )
smtp.ehlo();
smtp.esmtp_features["auth"] = ‘LOGIN’ #这里对认证方式进行指定
smtp.login(user, passwd)
smtp.sendmail(strFrom, toAdd, msgRoot.as_string())
smtp.quit()

 

看评论有人需要完整的代码,我就把它上传在这里,欢迎指导!

Back Top

回复自“cvs日志统计”

  1.      
     

    顶!好强大!MM们好感动吧?

     
         
    lala 在  2011-08-24 21:14  回复
  2.      
     

    楼主,可以分享一下你的代码吗?我正好也面临同样的问题。如果可以,非常感谢!!!
    My email: swallow13@163.com

     
         
    Alex 在  2012-02-13 15:40  回复
  3. 引用:cvs日志分析代码 | 人生如梦

  4.      
     

    哥们,多谢你发的代码!

    我在CVS服务器上用了一下, COPY到history文件所在目录。设置好ini文件,运行程序,但是报错。

    $ ./GetHistory.py
    : bad interpreter: No such file or directory

    我在 if __name__==”__main__”: 这句后面添加一个print 调试,结果并没有执行到这里。能帮忙看看吗?

    另外,邮件设置里好像没有端口设置,很多SMTP,比如gmail,都要用加密的tls 或者ssl了,这个该怎么设?

    再次感谢!

     
         
    Alex 在  2012-02-20 17:51  回复
    •      
       

      : bad interpreter: No such file or directory

      这个错误,一般是文件格式问题吧,你用UE之类的工具把文件转成unix格式的再试试看。有些ftp工具上传的时候会改格式,用bin方式上传比较好。或者看下你自己主机上的python解释器的安装路径。

      写工具的时候本意是只在我们自己内网使用的,用的是内网的邮箱,所以没考虑端口配置等。你可以google一下“python 邮件 gmail”,修改函数sendEmail和相关配置即可。

       
           
      八哥 在  2012-02-21 11:48  回复
      •      
         

        非常感谢!dos2unix 一下以后,解决。SMTP问题也搞定了。

        smtp.connect(server)—> smtp.connect(server,587)

        smtp.ehlo() 之后添加一句
        smtp.starttls()

         
             
        Alex 在  2012-02-21 15:29  回复
  5.      
     

    有一个问题,不能设定针对 branch tag 来统计,不知道有没有办法解决?

     
         
    Alex 在  2012-03-01 16:06  回复
  6.      
     

    可以发个代码给我吗,万分感谢

     
         
    Rick 在  2012-06-07 15:14  回复
  7.      
     

    I’ll immediately grab your rss feed as I can not to find your email subscription hyperlink or e-newsletter service. Do you have any? Kindly allow me understand in order that I may subscribe. Thanks.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值