/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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);
> }
> ?>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177519
Tips : 31968
Nyheder : 719565
Indlæg : 6408650
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste