wtorek, 14 maja 2013

Log parser

Wrzucam prosty parser logów z plików CSV.
Ma on za zadanie wyszukać ilość wystąpień adresów IP łączących się na port 25 ze wszystkich plików CSV znajdujących się w katalogu.




<?php

$csvData =  join(array_map("file_get_contents", glob("*.csv")));
$csvLine = explode("\n",$csvData);
$searchPort  = '25'; // example 25 - SMTP

for($i = 0; $i <= count($csvLine); $i++)
{
        @$csvCol = explode(',',$csvLine[$i]);
        @$SourceAddress = $csvCol[7];
        @$DestinationPort = $csvCol[25];

        if($DestinationPort == $searchPort)
        {
                $SourceAddressList[] = $SourceAddress;

        }



}


foreach (array_count_values($SourceAddressList) as $key => $value)
{
        if($value >= 20)
          echo "IP: $key  wystapilo $value razy\n";
}

?>



Sam parser raczej się nikomu nie przyda w takiej formie jak wrzuciłem więc będziecie musieli sobie poprzerabiać odpowiednio dla własnych plików. Wystarczy pozmieniać numery kolumn:

 @$SourceAddress = $csvCol[7];
 @$DestinationPort = $csvCol[25];