# sifts all the server logs based on media type # added func to print -ok at end of empty files, Federal added 5/31/01 # added mpga on 6.08.01 # added pst on 7.27.01 # added a backup of old logs a MMDDYY directory based on the last exe.txt time stamp use strict; use File::Copy; my ($type, $server,$out,$in,@input,$total,$kbytes,$mbytes); my @servers=('SERVER1','Server2'); my $dir1='//workstation/share/serverlogs/media'; my @types=('swf','asf','avi','mp2','mp3','mpg','mpga','mpe','mpeg','wav','mov','qt','mid','midi','ra','ram','rmi','rmj','rmx','zip','exe','wma','pst','ogg','gho'); ###################### # Create a new directory with the date of the last exe.txt MMDDYY under sifted ###################### my @statarray=stat('c:/share/serverlogs/media/sifted/exe.txt'); my @statarray2=localtime($statarray[9]); my $month=$statarray2[4]+1; my $year=$statarray2[5]-100; my $dirname=sprintf("$dir1/sifted/%.2d%.2d%.2d",$month,$statarray2[3],($statarray2[5]-100)); ###################### # Backup the old logs to the new dir ###################### opendir(DIR, "$dir1/sifted") or die "can't opendir $dir1: $!"; my @files = grep { !/^\./ && -f "$dir1/sifted/$_" } readdir(DIR); closedir DIR; mkdir ("$dirname")or die "Couldn't mkdir! $!"; foreach (@files){ copy("$dir1/sifted/$_","$dirname")or die "Couldn't Copy! $!"; } unlink <$dir1/sifted/*.txt>; ###################### # Sort the logs ###################### foreach $type (@types){ $total=0; my $out="$dir1/sifted/$type\.txt"; my $out2="$dir1/sifted/$type-ok\.txt"; open OUT, ">$out" or die "Cannot open $out for write :$!"; foreach $server (@servers){ $in="$dir1/$server\.txt"; open IN,"$in" or next; @input=; chomp @input; foreach (@input){ if (/\.$type$/i){ $kbytes = (stat)[7]/1024; $total+=$kbytes; print OUT "$_\t$kbytes KB\n"; } } close IN; } $mbytes=$total/1024; print OUT "\n\nTotal: $mbytes MB\n"; close OUT; if ($mbytes eq 0){ rename $out, $out2; } print "Finished $type...\n"; }