####################################################################### ## webloganalysis.pl ## Anno Domini: march-17-2000 ## Peter Tapolyai tinkershop@tinkershop.net ## http://www.tinkershop.net ## ## Written in Perl for NT ## This application executes Analog (web log analysis tool) to analyze each ## website's weblogs. This application is called from the scheduler "AT" program ## and is run at every night at 2:30 am. ## ## This script also dynamicaly makes each websites's config file from the original ## config file that I renamed to Analog1.cfg without the headers. ## ## Paths and file names are purposly hardcoded for security reasons! ## ## The scheduler command is: ## at 2:20 /every:M,T,W,Th,F d:\inetpub\websites\scpintranet\webloganalysis.pl ## use File::Copy; use File::DosGlob 'glob'; use Win32::Process; @sSites = ("spectrum","spacecom","acts","wincom","acatm","scp"); foreach $site (@sSites) { if ($site eq "spectrum") { $iNum = 1 }elsif ($site eq "spacecom") { $iNum = 2 }elsif ($site eq "acts") { $iNum = 3 }elsif ($site eq "wincom") { $iNum = 5 }elsif ($site eq "acatm") { $iNum = 6 }elsif ($site eq "scp") { $iNum = 7 } @sFilesToDelete = glob "C:\\Analog\\*.log"; map { unlink $_ } @sFilesToDelete; @sLogFiles = glob "C:\\Winnt\\system32\\LogFiles\\W3svc" .$iNum . "\\*.log"; map {copy($_,"C:\\Analog")}@sLogFiles; ## For each site analyzed I write a new config file. Only two variables, the ## OUTFILENAME and HOSTNAME changes with each site $sConfigHeader = "# Configuration file for analog 4.03\n"; $sConfigHeader .= "# See http://www.statslab.cam.ac.uk/~sret1/analog/ \n"; $sConfigHeader .= "# \n"; $sConfigHeader .= "# Here are a couple of configuration commands to get you started. Add any more \n"; $sConfigHeader .= "# you like from the Readme. \n"; $sConfigHeader .= "# \n"; $sConfigHeader .= "# There is a much more extensive configuration file in examples/big.cfg \n"; $sConfigHeader .= "# \n"; $sConfigHeader .= "# If you need a LOGFORMAT command it must go here, above the LOGFILE command. \n"; $sConfigHeader .= "OUTFILE " . $site . ".html\n"; $sConfigHeader .= "\nLOGFILE ex*.log \n"; $sConfigHeader .= "HOSTNAME \U$site\n"; $sConfFile = "C:\\Analog\\Analog1.cfg"; open(CONFIGPATTERN, $sConfFile); @ConfFile = ; close(CONFIGPATTERN); open(CONFIGFILE, "+>C:\\Analog\\Analog.cfg"); print(CONFIGFILE $sConfigHeader); print(CONFIGFILE @ConfFile); close(CONFIGFILE); Win32::Process::Create($ProcessObj, "C:\\Analog\\Analog.exe", "", 0, NORMAL_PRIORITY_CLASS, "C:\\Analog")|| print "Analog Execution Error\n

\n"; $Timeout = 1000; $ProcessObj->Wait($Timeout); $ProcessObj->GetExitCode($Exitcode); if ($site eq "spacecom") { sleep 60; }elsif ($site eq "acts") { sleep 120; } $sFilename = $site . ".html"; unlink("D:\\Inetpub\\websites\\scpintranet\\wwwroot\\" . $sFilename); copy("C:\\Analog\\" . $sFilename,"D:\\Inetpub\\websites\\scpintranet\\wwwroot"); } @sFilesToDelete = (); push(@sFilesToDelete, glob "C:\\Analog\\*.html"); map { unlink $_ } @sFilesToDelete; ## #######################################################################