#!/usr/bin/perl  

# Checks for input and pcl-bo logs.
# Grabs latest entry for each 
# Writes values as single line  to /opt/Firehunter/DATA/traffic_hostname_HHMM.dat


#########################
# Standard Declarations #
#########################
use POSIX;
use Env;

use Getopt::Long;      # Used for parsing runstring options
use English;
use Carp;
use Cwd;
use File::Path;
use File::Glob;
use File::Copy;

############################
# Declare Global Variables #
############################
my $sysOS;          # Operating System
my $sysHostname;    # Hostname
my $sysRelease;     # OS Release
my $sysVersion;     # OS Version
my $sysMachine;     # Architecture
($sysOS, $sysHostname, $sysRelease, $sysVersion, $sysMachine) = POSIX::uname();

# date 
my ($sys_day,$sys_mon,$sys_year) = (localtime)[3,4,5];
    $sys_mon += 1;  #jan is 0
    $sys_year += 1900;
    $today = sprintf "%d-%02d-%d",$sys_year,$sys_mon,$sys_day;  # date needs to match 2009-09-11 

my @filelist = ();
my @arr = ();
my @FinalArray = ();    # array of values to be written to output file
#$DestDir = "/tmp/FH_DATA";  #tmp dir to hold single line results
$DestDir = "/opt/Firehunter/DATA/traffic_count"; # dir to hold single line results
$LogsDir  = "/opt/ipcore/logs";     # where log files should be

#create working directory
if (! -d $DestDir){
     mkpath($DestDir) or die "Failed to create $DestDir: $!\n";
     qx [chmod 777 $DestDir];  #to fix 755 permissions
}

# Test 1.  Look for /opt/ipcore/logs directory.  
#
if (! -d "$LogsDir"){
        exit;    #Anything placed after exit will not execute. 
}

#debug  @filelist=("input.log", "sip-bo.log", "isuptcap-bo.log", "ncs-bo.log", "h248-bo.log", "ncs2-bo.log");
  @filelist=("input.log", "sip-bo.log", "isuptcap-bo.log", "ncs-bo.log", "h248-bo.log");

  foreach my $file (@filelist){
      my @lines = ();    # clear for each file

      chdir("$LogsDir");
      my $LastFile = qx[ls -rt $file* | tail -1];   # should catch log1, log2...  
      chomp $LastFile;

      if (-e $LastFile){
          open INPUT,"<$LastFile" or die $!;
          while (<INPUT>) {
               if ($_ =~ /Interval No. Events\/Sec/) { 
                  push(@lines, $_);      #all matching lines into array
               }
          }
          close(INPUT);
     
          # 2009-09-28 11:50:00.000 INFO  MultipleInput - Interval No. Events/Sec = 3266.57
          my @arr = split(/\s+/,pop(@lines) );     #last element= latest entry written to log
#debug      print "$file: @arr\n";

          my $value = $arr[-1]; #last element of each line
          $time = $arr[1];   # timestamp
          $time =~ s/:\d+\.\d+//g;
          $time =~ s/://g;

          if ($value gt 0) {   # one actually exists
              push(@FinalArray,$value); 
          } else {
              push(@FinalArray,"0.0");  # NULL
          }
#      print "$file: arr[0]=$arr[0]\n";

     } else {  #file did not exist
              push(@FinalArray,"0.0");  # NULL
     }

 } #foreach file

 open OUT,">$DestDir/traffic_${sysHostname}_${time}.dat" or die $!;
# debug print  "@FinalArray\n";
 print OUT "@FinalArray";
 close(OUT);

