I think that I have bit off more than I can chew here....

Error: The process cannot access the file because it is being used by
another process.

== Script ==
#!/usr/bin/perl
###########################################################################
#
#  Copyright  (C) 1998 by Syncsort, Inc.
#  All Rights Reserved.
#  Revision 1.0  Original version RAM
#           1.1  Added volser and partition number RAM
#           1.2 Ported to NT by Mike Singleton
#
###########################################################################
# <title>: syncrpt..pl
#
# <usage>:
#
my $HELP="
<description>:

This script must be run on the Backup Express master server.
This script must be run from the bin subdirectory of
 Backup Express if the environment variable SSPRODIR is not set to the
 Backup Express directory.
You must have root priviliges to run this script.

\"jobrpt\" will generate a report of completed and failed Backup Express
jobs, based on the information in the logs subdirectory.  Note that this
is not identical to the information contained in the Backup Express catalog.
In particular, it only provides information on the last 30 days worth of
jobs.

<options>:

-h                 : Help.

USAGE; \"$0 \"

Type \"$0 -h\" for help
";
# <dependencies>:
# None.
#
# <outputs>:
# This script uses a temporary file jobrpt.tmp
# The report is written to standard output

###########################################################################
# Initialization
###########################################################################
# load modules
use strict;
use English;
use Getopt::Std;
use Cwd;
# Set defaults

my $CUR_DIR=cwd;

my $RPTFILE="jobrpt.tmp";


###########################################################################
#       Parse arguments
###########################################################################
getopts('hn:p:o:s:') or die "$HELP";
($Getopt::Std::opt_h) and die $HELP;

# Get a temporary file id
my $COUNT=0;
my $OUT_TEMP="jobrpt.$COUNT";
my ($njob, @line, $current);
my (@jobid, %starttime, %jobname, %jobtype, %status, %endtime, %volser);
my $grepexpr;

format =
@<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<
@<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$jobname{$_}, $jobtype{$_}, $starttime{$_}, $endtime{$_}, $volser{$_}
.

#grep all the job logs for the following codes:
#  Job start
my $JOBSTART  = 'SNBJH_3203J';
#  Condense start
my $CONDSTART =  'SNBJH_3403';
#  Job end
my $JOBEND  = 'SNBJH_3211J';
#  Condense end
my $CONDEND =  'SNBJH_3401J';
#  Job cancelled
my $JOBCANC =  'SNBJH_3258J';
#  Job fail
my $JOBFAIL = '-1';
#  Volsers used
my $VOLUSED =  'SNBJH_3320J';
my %statcode =
    ( "$JOBEND" => '0',
      "$CONDEND" => '0',
      "$JOBFAIL" => '-1',
      "$JOBCANC" => '-2',
     );
my $MAXVLENGTH = 30;
my $search;

while (-f $OUT_TEMP) {
        $COUNT += 1;
        $OUT_TEMP="jobrpt.$COUNT";
}

# Open the temp file for write
# Check to make sure that job exists

open (OUTF,">$OUT_TEMP") || die "Cannot open output file $!";
my @files = glob('3*.log');
$grepexpr = "egrep
\"$JOBSTART\|$CONDSTART\|$JOBEND\|$CONDEND\|$JOBCANC\|$VOLUSED\"
@files>$OUT_TEMP";
system "$grepexpr";
close OUTF;


$njob = 0;
# Open the temp file for read
open (OUTF,"$OUT_TEMP") || die "Cannot open file for read, $!";
while (<OUTF>) {
    @line = split(' ');
# First the grep for the start of the job
#    print "Seventh token is $line[7]\n";
    $search = '$line[7] =~ /' . "$JOBSTART" . '/';
    if (eval $search) {
 chop $line[14]; # Remove the ")"
 $current = $line[14];
 $jobid[$njob++] = $current;
 $starttime{$current} = $line[2] . " ";
 $starttime{$current} .= $line[3] . " ";
 $starttime{$current} .= $line[4] . " ";
 $starttime{$current} .= $line[5] . " ";
 $starttime{$current} .= $line[6];
 $jobname{$current} = $line[11];
 $jobtype{$current} = $line[17];
 chop $jobtype{$current};
 $status{$current} = $statcode{$JOBFAIL};  #  Default
 $endtime{$current} .= $starttime{$current}; # Default
        $volser{$current} = '';
    }
    $search = '$line[7] =~ /' . "$CONDSTART" . '/';
    if (eval $search) {
 chop $line[15]; # Remove the ")"
 $current = $line[15];
 $jobid[$njob++] = $current;
 $starttime{$current} = $line[2] . " ";
 $starttime{$current} .= $line[3] . " ";
 $starttime{$current} .= $line[4] . " ";
 $starttime{$current} .= $line[5] . " ";
 $starttime{$current} .= $line[6];
 $jobname{$current} = $line[10];
 $jobtype{$current} = $line[10];
 $status{$current} = $statcode{$JOBFAIL};  #  Default
 $endtime{$current} .= $starttime{$current}; # Default
        $volser{$current} = '';  #  No volsers for Condense
    }
    $search = '$line[7] =~ /' . "$JOBEND" . '/';
    if (eval $search) {
#  First check whether the bytecount is nonzero
 if ($line[17] ne '0') {
     $status{$current} = $statcode{$JOBEND};
 } else {
     $status{$current} = $statcode{$JOBFAIL};
 };
 $endtime{$current} = $line[2] . " ";
 $endtime{$current} .= $line[3] . " ";
 $endtime{$current} .= $line[4] . " ";
 $endtime{$current} .= $line[5] . " ";
 $endtime{$current} .= $line[6];
    }
    $search = '$line[7] =~ /' . "$CONDEND" . '/';
    if (eval $search) {
 $status{$current} = $statcode{$CONDEND};
    }
    $search = '$line[7] =~ /' . "$JOBCANC" . '/';
    if (eval $search) {
 $status{$current} = $statcode{$JOBCANC};
    }
    $search = '$line[7] =~ /' . "$VOLUSED" . '/';
    if (eval $search) {
#        print "Line contains token 7 $line[7].\n";
        $search = '$volser{$current} =~ /' . "$line[9]" . '/';
        if (!(eval $search)) {
     $volser{$current} .= ' ' . $line[9] . '(' . $line[11] . ')';
 }
    }
};

# Now print out the hashed data
print "   *   *   *   *   *   ";
print "Completed jobs";
print "   *   *   *   *   *   \n";

print "Jobname             Type            Start                      End
Volsers(Partitions)\n";
foreach (@jobid) {
    if ($status{$_} eq $statcode{$JOBEND}) {
 if (length $volser{$_} > $MAXVLENGTH) {
     $volser{$_} = 'See job log';
 }
 write;
};
}
print "\n\n   *   *   *   *   *   ";
print "Cancelled jobs";
print "   *   *   *   *   *   \n";

print "Jobname             Type            Start
End\n";
foreach (@jobid) {
    if ($status{$_} eq $statcode{$JOBCANC}) {
write;
};
}
print "\n\n   *   *   *   *   *   ";
print "Failed jobs";
print "   *   *   *   *   *   \n";

print "Jobname             Type            Start
End\n";
foreach (@jobid) {
    if ($status{$_} eq $statcode{$JOBFAIL}) {
write;
};
}
exit 0;
==== End ====



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to