On Jul 7, 11:53 am, [EMAIL PROTECTED] (Rob Dixon) wrote:
> Andy wrote:
> > Funny how when you talk to different people you get different ways of
> > looking at it.
> > One of the Perl guys at my office. told me that I can use
> > use strict;
> > use warnings;
> > but he said , he really doesn't because he wants the script to do
> > what
> > it needs to do...
> Then he is a fool and should be disregarded. Perhaps he could post to
> this group
> to explain himself?
> > I have made corrections as you suggested.
> > I have included.
> > use strict;
> > use warnings;
> > as well as
> > my $TIME =$fields[3]
> > However after that ,
> > I still get zero output.
> > Maybe I have this written .....
> Have you incorporated all the corrections that John posted in his first
> response? Perhaps you should post your program in its current state so
> that we
> can take another look.
> Rob
Thank you all for the patience.
I have been doing some debugging...well as much of it as I can handle
with no exp...
This is the current code. I figured out with some help that My
$Dateroot was trying to read
incoming.xferlog.xferlog.csv.....
Eventually I want to run "perl andylog.pl and it will Parse all the
xferlogs in the dir.
Thus far with all your help I have it working...now for the tweaks.
I have some lines longer than the other and I have to figure out how
to skip those lines ...
So now I have to figure out how to read them all even longer ones
Tue Apr 29 00:02:13 2008 0 x.x.x.x 521 /home3/FTP-protected/TFN/ixx/
GPSdetail_rpt_20080428_200525.txt b _ i r xxx ftp 0 * c
Tue Apr 29 00:03:40 2008 25x.x.x.x 4246252 /home4/FTP-protected/
DATAWORKS/1234/user_nameEUestimates_2000.zip b _ o r username ftp 0 *
c
use strict;
use warnings;
#Define LogFiles
my $dateroot=$ARGV[0]; # Value should be 2-digit month
my $outgoing="outgoing_xferlog.$dateroot.csv"; # This is for all
files sent to users
my $incoming="incoming_xferlog.$dateroot.csv"; #This is log for
uploads
my $loginsinlog="loginsinlog_xferlog.$dateroot.csv"; # This is where
log users
my $completedlog="completedlog_xferlog.$dateroot.csv"; # All
Completed Sessions
my $failedlog="failedlog_xferlog.$dateroot.csv"; # This is for
all Failures
my %loginsin;
my %completed;
my %failures;
my %incoming;
my %outgoing;
#Time Measured
print "Started Processing Logfiles for $dateroot at " .
(localtime) ."\n\n";
#Open Log File Dir to Read .log file(s)
opendir (DIR, ".") or die "$!";
#my @logfiles = grep {/xferlog\.$dateroot/,} readdir DIR;
my @logfiles = grep {/$dateroot/,} readdir DIR;
close DIR;
#Start Log Processing
foreach my $logfile (@logfiles) {
print "Started Processing: $logfile at " . (localtime) ."\n";
open(FH,"./$logfile") or die "$!";
while ( my $lines = <FH> ) {
chomp($lines);
my @fields = split / /, $lines; #This is where we look for the .
extensions from the file name
# next if /^#/;
# next if /^(\s)*$/;
#My Ftp Status Log Values
my $TIME =$fields[3]||'NULL';#fields[1],fields[2],fields[3];
my $YEAR = $fields[4]||'NULL';
my $IP = $fields[6]||'NULL';
my $SIZE = $fields[7]||'NULL'; #filesize
my $FILE = $fields[8]||'NULL'; #filename and path
my $DIRECTION = $fields[11]||'NULL'; #Outgoing, Incoming
my $USERNAME = $fields[13]||'NULL';
my $STATUS= $fields[17]||'NULL'; #c = completed i=incomplete
( my $MASKFILE = $FILE ) =~ tr/0-9/#/; #$cnt = tr/0-9//;# count
the digits in $_
#Failures This is where we check for
failures
if ($DIRECTION eq "i" and $STATUS ne "c" ){$failures {$USERNAME} =
$TIME.",".$YEAR.",".$FILE.",".$IP;}
#completed sessions
if ($STATUS =~ m "c" ){$completed {$USERNAME} = $TIME.",".$YEAR.",".
$IP;}
# incoming
if ($DIRECTION eq "i" ){$incoming {$USERNAME} = $TIME.",".$YEAR.",".
$FILE.",".$SIZE.",".$IP;}
#Outgoing this is where we log all
outgoing xfers
if ($DIRECTION eq "o"){$outgoing {$USERNAME} = $TIME.",".$YEAR.",".
$FILE.",".$SIZE.",".$IP;}
#Masked Options with file
extensions
#if ($DIRECTION eq "i" and $STATUS eq "c" ){$ {$USERNAME.",".
$MASKFILE} = $FILE.",".$TIME.",".$YEAR.",".$IP.",".$STATUS;}
}}
close(FH);
#}
open(OUTPUT, '>', $incoming) or die("Could not open log file.");
for my $key ( sort %incoming) { if ($incoming{$key}) { print OUTPUT
"$key,$incoming{$key}\n";}}
close(OUTPUT);
open(OUTPUT, '>', $outgoing) or die("Could not open log file.");
for my $key ( sort %outgoing) { if ($outgoing{$key}) { print OUTPUT
"$key,$outgoing{$key}\n";}}
close(OUTPUT);
open(OUTPUT, '>', $failedlog) or die("Could not open log file.");
for my $key ( sort %failures) { if ($failures{$key}) { print OUTPUT
"$key,failures{$key}\n";}}
close(OUTPUT);
open(OUTPUT, '>', $completedlog) or die("Could not open log file.");
for my $key ( sort %completed) { if ($completed{$key}) { print OUTPUT
"$key,$completed{$key}\n";}}
close(OUTPUT);
#open(OUTPUT, '>', $) or die("Could not open log file.");
#for my $key ( sort %) { if (${$key}) { print OUTPUT "$key,${$key}
\n";}}
#close(OUTPUT);
print "\nFinished Processing Logfiles for $dateroot at " .
(localtime ) ."\n\n";
print "This script took ". (time - $^T)/60 ." minutes \n"