When working ALU IMS Patch team, we need to static the SU duration to add it to the patch report, the duration time alway is hard work, so I write the follow tool to auto do this work.

 #!/usr/bin/python2.6
 import re,datetime
 file_name='/home/alzhong/logs/qtat1/R2860.01.13/sim-applycommitrollback-bld1.log'
 file=open(file_name,'r')
 acnum=[];time_res=[];lnum=0
 def trans_time(time):
     t1=datetime.datetime.strptime(time,'%y/%m/%d %H:%M:%S')
     return t1
 for (num,line) in enumerate(file):

     if(re.search(r'^(.*)BEGINNING SIM PROCEDURE(.*)$',line)):
         m=re.search(r'^(.*)BEGINNING SIM PROCEDURE(.*)$',line)
         print 'Step %d:'%(lnum), m.group(0);lnum+=1
         acnum.append(trans_time(line[0:17]))
     elif(re.search(r'^(.*)CP_W(.*)$', line)):
         m=re.search(r'^(.*)CP_W(.*)$', line)
         print 'Step %d:'%(lnum), m.group(0);lnum+=1
         acnum.append(trans_time(line[0:17]))
     elif(re.search(r"^(.*)VERIFY_S(.*)$", line)):
         m=re.search(r"^(.*)VERIFY_S(.*)$", line)
         print 'Step %d:'%(lnum), m.group(0);lnum+=1
         acnum.append(trans_time(line[0:17]))
     elif(re.search(r"^(.*)--action commit(.*)$",line)):
         m=re.search(r"^(.*)--action commit(.*)$",line)
         print 'Step %d:'%(lnum), m.group(0);lnum+=1
         acnum.append(trans_time(line[0:17]))
     elif(re.search(r"^(.*)COMPLETED SIM PROCEDURE(.*)$",line)):
         m=re.search(r"^(.*)COMPLETED SIM PROCEDURE(.*)$",line)
         print 'Step %d:'%(lnum), m.group(0);lnum+=1
         acnum.append(trans_time(line[0:17]))
     elif(re.search(r"^(.*)RESUMING SIM PROCEDURE(.*)$",line)):
         m=re.search(r"^(.*)RESUMING SIM PROCEDURE(.*)$",line)
         print 'Step %d:'%(lnum), m.group(0);lnum+=1
         acnum.append(trans_time(line[0:17]))

 file.close()
 if(re.search(r"^(.*)backout(.*)$",file_name)):
     time_res.append((acnum[2]-acnum[0]).seconds/60)
     time_res.append((acnum[4]-acnum[3]).seconds/60)
     time_res.append((acnum[6]-acnum[5]).seconds/60)
     time_res.append(((acnum[8]-acnum[7])+(acnum[10]-acnum[9])+(acnum[13]-acnum[11])).seconds/60)
     print "\n3). sim --proc update --action apply to \"CP_WARNING\" %s mins" %(time_res[0])
     print "4). sim --proc update --action resume to  \"VERIFY_SOFTWARE\" %s mins"%(time_res[1])
     print "5). sim --proc update --action resume to  \"COMMIT\" %s mins"%(time_res[2])
     print "8). Backout from RXX to RXX  %s mins"%(time_res[3])
 elif(re.search(r"^(.*)rollback(.*)$",file_name)):
     time_res.append((acnum[2]-acnum[0]).seconds/60)
     time_res.append((acnum[4]-acnum[3]).seconds/60)
     time_res.append((acnum[6]-acnum[5]).seconds/60)
     time_res.append((acnum[8]-acnum[7]).seconds/60)
     time_res.append(((acnum[10]-acnum[9])+(acnum[12]-acnum[11])+(acnum[15]-acnum[13])).seconds/60)
     print "\n3). sim --proc update --action apply to \"CP_WARNING\" %s mins" %(time_res[0])
     print "4). sim --proc update --action resume to  \"VERIFY_SOFTWARE\" %s mins"%(time_res[1])
     print "5). sim --proc update --action resume to  \"COMMIT\" %s mins"%(time_res[2])
     print "6). sim --proc update --action commit to end of Patch %s mins"%(time_res[3])
     print "8). Rollback from RXX to RXX %s mins" %(time_res[4])
 if __name__ == '__main__':
     pass

The output of the script as follows:

<lsslogin1-alzhong>/home/alzhong/tools: ls
simt
<lsslogin1-alzhong>/home/alzhong/tools: ./simt
Step 0: 14/06/16 12:31:32 BEGINNING SIM PROCEDURE 'update apply' type=hot ...
Step 1: 14/06/16 13:18:42 RESUMING SIM PROCEDURE 'update apply' type=hot ...
Step 2: 14/06/16 13:30:43 SIM0317 PAUSE_REQUEST: (PROCEDURE) [PAUSE(CP_WARNING): Use 'sim --proc update --action resume' to continue...] (update:1435)
Step 3: 14/06/16 13:43:40 RESUMING SIM PROCEDURE 'update apply' type=hot ...
Step 4: 14/06/16 13:47:49 SIM0343 PAUSE_REQUEST: (PROCEDURE) [PAUSE(VERIFY_SOFTWARE): Use 'sim --proc update --action resume' to continue...] (update:1634)
Step 5: 14/06/16 13:54:26 RESUMING SIM PROCEDURE 'update apply' type=hot ...
Step 6: 14/06/16 14:25:41 SIM0496 PAUSE_REQUEST: (COMMIT) [PAUSE(COMMIT): Use 'sim --proc update --action commit' to continue...] (update:2579)
Step 7: 14/06/16 14:41:51 RESUMING SIM PROCEDURE 'update commit' type=hot ...
Step 8: 14/06/16 15:18:34 COMPLETED SIM PROCEDURE 'update commit' type=hot
Step 9: 14/06/16 15:31:35 BEGINNING SIM PROCEDURE 'update rollback' type=hot level=9999 ...
Step 10: 14/06/16 15:47:34 SIM0091 PAUSE_REQUEST: (PROCEDURE) [PAUSE(CP_WARNING): Use 'sim --proc update --action resume' to continue...] (update_rlbk:421)
Step 11: 14/06/16 15:53:30 RESUMING SIM PROCEDURE 'update rollback' type=hot level=9999 ...
Step 12: 14/06/16 16:02:03 SIM0135 PAUSE_REQUEST: (PROCEDURE) [PAUSE(VERIFY_SOFTWARE): Use 'sim --proc update --action resume' to continue...] (update_rlbk:564)
Step 13: 14/06/16 16:04:22 RESUMING SIM PROCEDURE 'update rollback' type=hot level=9999 ...
Step 14: 14/06/16 16:09:42 RESUMING SIM PROCEDURE 'update rollback' type=hot level=9999 ...
Step 15: 14/06/16 16:26:56 COMPLETED SIM PROCEDURE 'update rollback' type=hot level=9999

3). sim --proc update --action apply to "CP_WARNING" 59 mins
4). sim --proc update --action resume to  "VERIFY_SOFTWARE" 4 mins
5). sim --proc update --action resume to  "COMMIT" 31 mins
6). sim --proc update --action commit to end of Patch 36 mins
8). Rollback from RXX to RXX 47 mins

A python tool to static sim.log duration time的更多相关文章

  1. Python Tool Visual Studio简单使用

    由于一直在做.NET的开发,一直用的IDE是VS系列的,所以想用VS也能开发Python,刚好微软提供一个插件PTVS(Python Tool Visual Studio)专门应用于Python开发的 ...

  2. hadoop 多表join:Map side join及Reduce side join范例

    最近在准备抽取数据的工作.有一个id集合200多M,要从另一个500GB的数据集合中抽取出所有id集合中包含的数据集.id数据集合中每一个行就是一个id的字符串(Reduce side join要在每 ...

  3. hadoop编程技巧(4)---总体情况key按类别搜索TotalOrderPartitioner

    Hadoop代码测试版:Hadoop2.4 原理:携带MR该程序随机抽样提取前的输入数据,样本分类,然后,MR该过程的中间Partition此值用于当样品排序分组数据.这使得可以实现全球排名的目的. ...

  4. 利用python 提取log 文件里的关键句子,并进行统计分析

    利用python开发了一个提取sim.log 中的各个关键步骤中的时间并进行统计的程序: #!/usr/bin/python2.6 import re,datetime file_name='/hom ...

  5. Android log 管理工具

    1.logger 项目地址: https://github.com/orhanobut/logger 2.KLog 项目地址:https://github.com/ZhaoKaiQiang/KLog ...

  6. python Web开发框架-Django (2)

    接上篇文章,介绍一些实用的技巧和注意点.首次用MarkDown编辑,感觉行空隙太大,不是那么好看. GET/POST 前后端会有数据交互,使用JQuery来实现get/post请求 GET 方法1:通 ...

  7. Embeding Python &amp; Extending Python with FFPython

    Introduction ffpython is a C++ lib, which is to simplify tasks that embed Python and extend Python. ...

  8. Storm(2) - Log Stream Processing

    Introduction This chapter will present an implementation recipe for an enterprise log storage and a ...

  9. Top free and open source log management software

    As mentioned in the previous post, in my quest to find an alternative to Kiwi Syslog, I looked at a ...

随机推荐

  1. css水平垂直居中(绝对定位居中)

    使用绝对定位有个限制就是父集必须设置一个固定的高度. 首先HTML <div id="box"> <div class="child"> ...

  2. WPF绘制简单常用的Path

    写代码出身的我们经常需要使用一些简单 但是不是规则图形的Path 但限于美工功底有限 不知道怎么去画 下面我告诉大家一些简单的小技巧 用代码来画Path 个人还是比较喜欢用代码 因为数值控制的更精细 ...

  3. cookie、sessionStorage、localStorage

    转自--http://www.cnblogs.com/fly_dragon/p/3946012.html cookie Cookie的大小.格式.存储数据格式等限制,网站应用如果想在浏览器端存储用户的 ...

  4. web前端网站收藏

    参考 w3school:html,css,js等各种参考 W3schools:较之w3school界面更华丽 webplatform:学习最新的web技术 MDN:mozilla developer ...

  5. [转]C# 连接 Oracle 的几种方式

    本文转自:http://www.cnblogs.com/storys/archive/2013/03/06/2945914.html 一:通过System.Data.OracleClient(需要安装 ...

  6. [Android Pro] StarUML 版本破解

    参考:http://bbs.chinapyg.com/thread-79022-1-1.html 官网下载地址 : http://staruml.en.softonic.com 各平台版本均适用,本文 ...

  7. 延长Toast显示时间

    ---恢复内容开始--- 由于Toast的显示时间只有两种: Toast.LENGTH_SHORT: 2秒 Toast.LENGTH_LONG: 3.5秒 而且是写死的,没给开发者自定义时间的权利,所 ...

  8. Javascript刷新页面的八种方法

    /** * Javascript刷新页面的八种方法 * 说明一下,jQuery没有发现刷新页面的方法. */ 1 history.go(0) 2 location.reload() 3 locatio ...

  9. mariadb主从复制架构学习笔记

    复制功用: 数据分布 负载均衡:读操作,适用于读密集型的应用 备份 高可用和故障切换 MySQL升级测试 在从服务器上有两个线程: I/O线程:从master请求二进制日志信息,并保存至中继日志 SQ ...

  10. DataTable添加列和行的三种方法

    JRoger 原文 #region 方法一: DataTable tblDatas =new DataTable("Datas"); DataColumn dc =null; dc ...