| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | log_ analyzer -> langsomt script.... Fra : Joe | 
  Dato :  11-04-03 23:47 |  
  |   
            Jeg er ved at skrive et script til at analyser min logfil fra apache....men
 det kører utrolig langsomt og ca hver anden gang for jeg timeout (30 sec).
 Der kommer også nogle (ser det ud til) tilfældig gentaglser af noget af
 outputet....
 
 Filen jeg gennemlæser er et udpluk fra logfilen på 200kb..
 
 Jeg har en mistanke om at mine RE'er ikke er gode nok, men kan ikke lige se
 hvad der skal ændres...
 
 Alle kommentare vil være værdsat... koden vedlagt herunder.
 
 //Joe
 
 ------------------
 
 <?
 $result   = fopen ("new.html", "wb");#outputfile
 $source   = fread (fopen ('access.log', 'r'), filesize
 ('access.log'));#inputfile
 $source   = split("\n",nl2br($source));#prepare for html output
 
 foreach($source as $token)
 {
 
  if(!$client == 0)#if not first run -> continue
  {
 
  if(preg_match("/".$client."/",$token))#if ip has been seen before
  {
   continue;
  }
 
  else #if new ip
  {
   $client = trim(str_replace("-","",substr($token,0,13)));
    do_check($source,$token,$client);
  }
 
  }
 
  else #if first run -> continue
  {
  $client = trim(str_replace("-","",substr($token,0,13)));
  do_check($source,$token,$client);
  }
 
 }
 
 function do_check($source,$token,$client)
 {
  foreach($source as $token)
  {
  if(preg_match("/".$client."/",$token))
  {
   if(preg_match("/default\.ida\?N/",$token)){$codered1++;;}
   else if(preg_match("/default\.ida\?X/",$token)){$codered2++;}
   else if(preg_match("/winnt/",$token)){$nimda++;}
   else if(preg_match("/CONNECT/",$token)){$spam++;}
   else if(preg_match("/[[:space:]]200/",$token)){$succes++;}
   else if(preg_match("/[[:space:]]304/",$token)){$notmodified++;}
   else if(preg_match("/[[:space:]]401/",$token)){$unauthorized++;}
   else if(preg_match("/[[:space:]]404/",$token)){$notfound++;}
   else if(preg_match("/[[:space:]]408/",$token)){$requesttimeout++;}
   else {echo str_replace($client,"",$token);}
  }
  }
  if(($nimda+$codered+$codered2+$spam)>0)
  {
   echo '<p><b>'.$client.'</b><br>';
   if($succes>=1)     {echo '<font color="#0000ff">  '.$succes.' requests was
 succesful</font><br>';}
   if($notfound>=1)     {echo '<font color="#0000ff">  '.$notfound.' requests
 was not found</font><br>';}
   if($nimda>=1)       {echo '<font color="#0000ff">  '.$nimda.' Nimda
 attacks failed</font><br>';}
   if($codered>=1)      {echo '<font color="#0000ff">  '.$codered.' Code Red
 I attacks failed</font><br>';}
   if($codered2>=1)     {echo '<font color="#0000ff">  '.$codered2.' Code Red
 II attacks faild</font><br>';}
   if($spam>=1)      {echo '<font color="#0000ff">  '.$spam.' tries where
 made to relay spam</font><br>';}
   if($unauthorized>=1)  {echo '<font color="#0000ff">  '.$unauthorized.'
 tries where made to enter unauthorized pages</font><br>';}
   if($requesttimeout>=1) {echo '<font color="#0000ff">  '.$requesttimeout.'
 timeouts where encountered</font><br>';}
   if($notmodified>=1)    {echo '<font color="#0000ff">  '.$notmodified.'
 "304 Not Modified" responses was sendt by server</font><br>';}
  echo '</p>';
  }
  unset($succes);
  unset($notfound);
  unset($notmodified);
  unset($nimda);
  unset($codered);
  unset($codered2);
  unset($spam);
  unset($unauthorized);
  unset($requesttimeout);
 }
 ?>
 
 
  
            
             |   |   
            
        
 
            
         
           Joe (12-04-2003) 
         
	
            | Kommentar Fra : Joe | 
  Dato :  12-04-03 20:21 |  
  |   
            Jeg snakkede med en af mine kammerater, der gjorder mig opmærksom på at det
 aldrig er smart at lave løkker inden i løkker hvis det kan
 undgåes.....(tidskompleksitet). Og han har selvfølgelig fuldstændig
 ret....jeg har åbenbart hygget mig for meget med at for lortet til at virke
 uden at tænke på at få skrevet noget optimal kode...
 
 Beklager, klokken var mange, jeg var fustreret...
 
 Joe
 
 "Joe" <soulchaos@hotmail.com> wrote in message
 news:3e97465a$0$66276$edfadb0f@dread11.news.tele.dk...
 > Jeg er ved at skrive et script til at analyser min logfil fra
 apache....men
 > det kører utrolig langsomt og ca hver anden gang for jeg timeout (30 sec).
 > Der kommer også nogle (ser det ud til) tilfældig gentaglser af noget af
 > outputet....
 >
 > Filen jeg gennemlæser er et udpluk fra logfilen på 200kb..
 >
 > Jeg har en mistanke om at mine RE'er ikke er gode nok, men kan ikke lige
 se
 > hvad der skal ændres...
 >
 > Alle kommentare vil være værdsat... koden vedlagt herunder.
 >
 > //Joe
 >
 > ------------------
 >
 > <?
 > $result   = fopen ("new.html", "wb");#outputfile
 > $source   = fread (fopen ('access.log', 'r'), filesize
 > ('access.log'));#inputfile
 > $source   = split("\n",nl2br($source));#prepare for html output
 >
 > foreach($source as $token)
 > {
 >
 >  if(!$client == 0)#if not first run -> continue
 >  {
 >
 >  if(preg_match("/".$client."/",$token))#if ip has been seen before
 >  {
 >   continue;
 >  }
 >
 >  else #if new ip
 >  {
 >   $client = trim(str_replace("-","",substr($token,0,13)));
 >    do_check($source,$token,$client);
 >  }
 >
 >  }
 >
 >  else #if first run -> continue
 >  {
 >  $client = trim(str_replace("-","",substr($token,0,13)));
 >  do_check($source,$token,$client);
 >  }
 >
 > }
 >
 > function do_check($source,$token,$client)
 > {
 >  foreach($source as $token)
 >  {
 >  if(preg_match("/".$client."/",$token))
 >  {
 >   if(preg_match("/default\.ida\?N/",$token)){$codered1++;;}
 >   else if(preg_match("/default\.ida\?X/",$token)){$codered2++;}
 >   else if(preg_match("/winnt/",$token)){$nimda++;}
 >   else if(preg_match("/CONNECT/",$token)){$spam++;}
 >   else if(preg_match("/[[:space:]]200/",$token)){$succes++;}
 >   else if(preg_match("/[[:space:]]304/",$token)){$notmodified++;}
 >   else if(preg_match("/[[:space:]]401/",$token)){$unauthorized++;}
 >   else if(preg_match("/[[:space:]]404/",$token)){$notfound++;}
 >   else if(preg_match("/[[:space:]]408/",$token)){$requesttimeout++;}
 >   else {echo str_replace($client,"",$token);}
 >  }
 >  }
 >  if(($nimda+$codered+$codered2+$spam)>0)
 >  {
 >   echo '<p><b>'.$client.'</b><br>';
 >   if($succes>=1)     {echo '<font color="#0000ff">  '.$succes.' requests
 was
 > succesful</font><br>';}
 >   if($notfound>=1)     {echo '<font color="#0000ff">  '.$notfound.'
 requests
 > was not found</font><br>';}
 >   if($nimda>=1)       {echo '<font color="#0000ff">  '.$nimda.' Nimda
 > attacks failed</font><br>';}
 >   if($codered>=1)      {echo '<font color="#0000ff">  '.$codered.' Code
 Red
 > I attacks failed</font><br>';}
 >   if($codered2>=1)     {echo '<font color="#0000ff">  '.$codered2.' Code
 Red
 > II attacks faild</font><br>';}
 >   if($spam>=1)      {echo '<font color="#0000ff">  '.$spam.' tries where
 > made to relay spam</font><br>';}
 >   if($unauthorized>=1)  {echo '<font color="#0000ff">  '.$unauthorized.'
 > tries where made to enter unauthorized pages</font><br>';}
 >   if($requesttimeout>=1) {echo '<font color="#0000ff">
 '.$requesttimeout.'
 > timeouts where encountered</font><br>';}
 >   if($notmodified>=1)    {echo '<font color="#0000ff">  '.$notmodified.'
 > "304 Not Modified" responses was sendt by server</font><br>';}
 >  echo '</p>';
 >  }
 >  unset($succes);
 >  unset($notfound);
 >  unset($notmodified);
 >  unset($nimda);
 >  unset($codered);
 >  unset($codered2);
 >  unset($spam);
 >  unset($unauthorized);
 >  unset($requesttimeout);
 > }
 > ?>
 >
 >
 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |