securecrt python脚本巡检,python自动化巡检脚本

本篇文章给大家谈谈securecrt python脚本巡检,以及python自动化巡检脚本,希望对各位有所帮助,不要忘了收藏本站喔。

# -*- coding: utf-8 -*-
'''
自动化巡检脚本v2.0
用法:切换目录到脚本所在目录,shell中输入:python3 脚本名 文件名 需要巡检的行数
目前版本未经过优化,仍有一些瑕疵. 推荐使用python3.4以上版本.
新增:进一步筛选时间相隔两分钟以内的错误信息
作者:loki
邮箱:549135011@qq.com
如有问题欢迎指教
'''

def get_file(line_num):#读取文件,分割文件,返回分割结果
    big_list=[]
    temp_li=[]
    for i in range(line_num):
        line=file.readline()#逐行读取文件
        if pattern.match(line):#若读到分割符.则停止,返回读取结果
            big_list.append(temp_li)
            temp_li=[]
            continue
        else:
            temp_li.append(line)#将读取到的行保存进临时列表
    return big_list
#################################################################
def analyse_file(li):#读取分割结果,返回分析结果
    analyse_info=li[0]
    cost=analycost_pattern.search(analyse_info).group(1)
    cost=eval(cost)
    if cost>500:#此处可以根据需要修改超时的时间值
        erro_list.append(li)
##################################################################
def analyse_time(error_list):#筛选出错误相隔时间小于等于两分钟的条目
    timestamp_list=[]
    index_list=[]
    pattern=re.compile(r'.*?(\d*-\d*-\d*\s\d*:\d*:\d*).*')
    for result in error_list:
        strtime=pattern.match(result[0]).group(1)
        tupletime=time.strptime(strtime,'%Y-%m-%d %H:%M:%S')
        timestamp=time.mktime(tupletime)
        timestamp_list.append(timestamp)
    #print(timestamp_list)
    cur=0
    for num in range(len(timestamp_list)-1):
        nex=cur+1
        if timestamp_list[nex]-timestamp_list[cur]<=120:#此处120秒,指的是相隔两分钟之内的信息才被认为有效
            index_list.append(cur)
            index_list.append(nex)
            cur=nex
        else:
            cur=nex
    index_list=list(set(index_list))
    return index_list
#################################################################
if __name__ == '__main__':
    import re
    import sys
    import time
    f=open('./log.txt','a')
    file=open(sys.argv[1],'r')
    pattern=re.compile(r'^\n$')
    analycost_pattern=re.compile(r'.*\[Cost\]:(\d*).*')
    erro_list=[]
    result_list=[]
    li=get_file(int(sys.argv[2]))
    block_num=len(li)
    try:
        for i in range(block_num):
            li.remove([])
    except:
        pass
    for j in li:
        analyse_file(j)
    index_list=analyse_time(erro_list)
    for index in index_list:
        print(erro_list[index][0])
        f.write(erro_list[index][0])
    f.close()

可以筛选大部分的oracle日志的信息

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值