zoukankan      html  css  js  c++  java
  • perl增量分析日志

    #!/usr/bin/perl
    #取文件行数
    ##循环开始清空文件
    use POSIX;
    use CGI;
    use DBI;
    my $dbName = 'oadb';
    my $dbUser = 'query';
    my $dbUserPass = 'query';
    my $dbh = DBI->connect("dbi:Oracle:$dbName", $dbUser, $dbUserPass) or die "can't connect to database " ;
    my $dir  = '/usr/local/apache-tomcat-7.0.55_8081/logs';
    my $file = 'catalina.out';
    my $SDATE = strftime("%Y-%m-%d",localtime());
    my $XDATE = strftime("%Y%m%d%H%M%S",localtime());
    $mon_file = "$dir/$file";
    if (-f "tmp.out"){
    open FILE,">tmp.out";
    close FILE;}
    
    open( A, "<", "count.txt" );
                while (<A>) {
                $count = $_;
                            };
    print "上次记录的记录数为$count
    ";
    
    
    open(my $fh, '<', "$mon_file");
    $. = 0;
    while (<$fh>) {
        ($num=$.) if eof;
                  };
    print "文件最新的记录数为$num"."
    ";
        open( B, ">", "count.txt" );
        print B ("$num
    ");
    
    if ( defined($count)  && $num != $count && $num !=0  )
    {    print "开始处理
    ";
         open( C, "<", "$mon_file" ) || die "$!
    ";
           while (<C>) {
                 if  ($. > "$count" ){ 
                  open( D, ">>", "tmp.out" );
                  print D ("$_");
                 }
                      }
    };
                  close D;
    ##########监控关键字,以空格隔开################
    @warn_arr = qw/ 登录失败 登陆失败 用户名或密码错误/;
    foreach $a (@warn_arr)
    {
                     $i   = 0;
                     $num = 0;
                       $b = 0;
                   open( D, "<", "tmp.out" ) || die "$!
    "; 
                   while (<D>) 
                      {
                                 $num++;
                                 if ( ( $_ =~ /$a/i ) && ($_ =~ /ClientAuthRealm/i) ) 
                                 {
                                 $i++; $b = $num ;$c = $num -1;
                                 print "$b is $b
    ";
                                 print "$c is $c
    ";
                                 open( E, "<", "tmp.out" ) || die "$!
    ";
                                 while (<E>) {
                                 if ( $. == "$c" ){ if ($_ =~ /.*username=(.*?)&password.*/){$USER=$1};};
                                 if ( $. == "$b" ){ if ($_ =~/.*{("retCode.*?)}.*/){$err_mes=$1};
                                                  if ($_ =~/(.*?),.*/){$date=$1;}
                                             }};
                                 close E;
                                print "$USER is $USER
    ";
                                print "$err_mes is $err_mes
    ";
                                print "$date is $date
    ";
                                  $dbh->do("INSERT INTO QUERY.ERR_INFO values('$USER','121.40.167.35',to_date('$SDATE','yyyy-mm-dd'),'$date||$err_mes',to_date('$XDATE','YYYYMMDDHH24MISS'))") or die($DBI::errstr);
                                
                                };
                       };
                                close D;
     };

  • 相关阅读:
    vue的环境的搭建
    rem
    web前端面试题总结
    vue遇到的一些问题
    栅格布局的理解
    利用node的http模块创建一个简单的http服务器
    node 常用的一些终端的命令的快捷键
    node 环境变量设置方法
    CentOS7.5搭建Hadoop2.7.6完全分布式集群
    UUID做主键,好还是不好?这是个问题
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351639.html
Copyright © 2011-2022 走看看