|
| 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);
> }
> ?>
>
>
| |
|
|