Herkese iyi geceler,
İnsanoğlu sanırım her şeyin çok daha iyisini,rahatını ve kolayını istiyor devamlı. Bu iyi bir şey mi bilemiyorum ama kaç gündür uğraştığım şeyin sonucunda tamda sizinde destekleriniz ile istediğim türde bir ürün aldım derken bu seferde bu işin daha pratik bir yolu yok mu diye düşünmeye başladım.
Keza şuana kadar yaptığım adımları gözden geçirince epey uğraştığımı gördüm.
Öyle ki intranet de kullandığımız uygulama ile ilgil günlük logları takip ve okuma işi için şöyle bir yol izliyoruz.

1-)Client lar makine üzerindeki uygulamaya erişip her işlem yaptıkça makine her yapılan işlem sonucunda 192.168.x.y de bir log çıktısı veriyor. Bende aşağıda yazdığım php kodu ile(localhost/levent/parseTarih.php) erişim tarihlerini okuyup, get_numbers('20130829'); formatın da ekrana basıyorum.
-------------------------------------------------
<?php
 function cekecek($site)
    {
        if(function_exists('curl_exec')) {
            $ch = curl_init();
            curl_setopt($ch,CURLOPT_URL, $site);
curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0.3) Gecko/2008092818 Pardus/2008 Firefox/4.0.0');
            curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
            curl_setopt($ch, CURLOPT_HEADER, 1);
            curl_setopt($oturum, CURLOPT_SSL_VERIFYPEER, false);

            $return = curl_exec($ch);
            curl_exec($ch);

            return $return;
        }
        else{
            return file_get_contents($site);
        }
    }
$source = cekecek('http://192.168.x.y/sonuclar/logTarihleri.php?tur=islem');

preg_match_all('#"tarih"\:"(.*?)"#si',$source, $parse);

foreach($parse[1] as $element)
        echo 'get_numbers(\'' .$element .'\');' . '&nbsp;'. '<br/>';

?>

ÇIKTISI:
get_numbers('20130819');
get_numbers('20130810');
get_numbers('20130809');
get_numbers('20130808');
-------------------------------------------------

2-)localhost/levent/parseTarih.php ile ekrandan aldığım tarihleri kopyalayıp aşağıdaki php koduna elle yapıştırıyorum. daha sonra aşağıda yazdığım php kodunu localhost/levent/parse.php olarak çağırıyorum ve neticede tek tek hata kodlarını alıyorum.
-----------------------------------------------------------------------------------------------------------------------------
<?php

function cekecek($site)
            {
                    if(function_exists('curl_exec')) {
                            $ch = curl_init();
                            curl_setopt($ch,CURLOPT_URL, $site);
curl_setopt($ch,CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; tr-TR; rv:1.9.0.3) Gecko/2008092818 Pardus/2008 Firefox/4.0.0');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
                            curl_setopt($ch, CURLOPT_HEADER, 1);
//curl_setopt($ch,CURLOPT_COOKIEJAR,"cookies.txt");
//curl_setopt($ch,CURLOPT_COOKIEFILE,"cookies.txt");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

                            $return = curl_exec($ch);
                            curl_exec($ch);

                            return $return;
                    }
                    else{
                            return file_get_contents($site);
                    }
            }
     function get_numbers($date) {
$source = cekecek('http://192.168.z.t/sonuclar/logTarihleri/islem/'.$date.'.php');
    preg_match_all('#"rakamlar"\:"(.*?)"#si', $source, $parse);
    foreach($parse[1] as $element)

        //echo str_replace("#", " ",$element) . '&nbsp;';
        echo str_replace("#", " ",$element) . '&nbsp;'.'<br/>';

        }
get_numbers('20130819');
get_numbers('20130810');
get_numbers('20130809');
get_numbers('20130808');
?>
ÇIKTISI :


23 44 19 27 46 39 32 05 51 26 53 12 21 03 17 07 46 30 32 48 51 06 35 16 35 12 52 48 07 14 46 29 40 32 31 26 34 21 51 14 47 22 23 38 21 09 41 31 34 30 33 11 29 51 51 10 43 46 14 20 52 51 44 02 42 05
--------------------------------------------------------------------------------------------------------------------

3-)Son olarak da 2. adımda aldığım hata kodlarını isle.php dosyasının içerisine yapıştırıp browserdan localhost/levent/isle.php dosyasını çağırıyorum
------------------------------------------------------------------------------------------------------------------------
<?php

$log="23 44 19 27 46 39 32 05 51 26 53 12 21 03 17 07 46 30 32 48 51 06 35 16 35 12 52 48 07 14 46 29 40 32 31 26 34 21 51 14 47 22 23 38 21 09 41 31 34 30 33 11 29 51 51 10 43 46 14 20 52 51 44 02 42 05";

$arr=explode(" ",$log);


for($i=0; $i<count($arr); $i++)
$array[$arr[$i]]++;

arsort($array);

echo '<pre>';
print_r($array);
?>

ÇIKTISI :

Array
(
    [51] => 6
    [46] => 4
    [14] => 3
    [21] => 3
    [32] => 3
    [48] => 2
    [30] => 2
    [34] => 2
    [23] => 2
    [31] => 2
    [07] => 2
    [52] => 2
    [29] => 2
    [35] => 2
    [05] => 2
    [26] => 2
    [44] => 2
    [12] => 2
    [11] => 1
    [33] => 1
    [41] => 1
    [10] => 1
    [09] => 1
    [43] => 1
    [42] => 1
    [02] => 1
    [20] => 1
    [38] => 1
    [47] => 1
    [39] => 1
    [03] => 1
    [16] => 1
    [06] => 1
    [27] => 1
    [40] => 1
    [53] => 1
    [17] => 1
    [19] => 1
    [22] => 1
)

------------------------------------------------------------------------------------------------------------------------
Şeklinde oluyor ve istediğimi elde ediyorum.
Ancak burada karşıma çıkan soru 3 seferde yaptığım işi tek seferde nasıl yapa bilirim? Keza her seferinde yeni tarihleri ve hata kodlarını kopyala yapıştır yapmak yerine web browserdan sadece localhost/levent/isle.php dosyasını çağırsam o benim yerine tüm bu işleri halledip bana sadece çalışmaya başladığı ilk günden beri o güne kadar oluşan logtari hlerini ve hata kodlarını okuyup hangi hata kodundan kaç adet basıldığını verse?

Tüm bu işlemlerini client bir makinede çalışan betikler ile yapmak istemiyorum. Keza her seferinde bu betikleri kullanacak olan kişinin makinesine kopyalamak gerekecek. Ancak en azından bir php script olursa herkes kendi makinesinden sadece bir adrese bağlanacak ve böylece karşına sadece sonuçlar gelecek.
Yıl sonu analiz işlemlerinde sırtıma bina yük kurtulmuş olacak.
Kolaylıklar Levent....

29-08-2013 23:42 tarihinde, H.İbrahim Yılmaz yazdı:
Merhaba Levent Bey,

Aşağıdaki ufak perl betiği işinizi görecektir:

 #!/usr/bin/perl
 use strict;
 use warnings;

 my $logfile = "log.txt";
 my $data = do{local(@ARGV,$/)=$logfile;<>};

 my %count;

 my @errors = split(' ', $data);
 foreach my $error (@errors) {
$count{$error}++;
 }

 print "HATA"." "."ADET\n";
 foreach my $error (keys %count) {
print "$error : $count{$error}\n";
 }

 exit 0;

Selamlar.


29 Ağustos 2013 21:03 tarihinde Levent SARI <[email protected] <mailto:[email protected]>> yazdı:

    Arkadaşlar ofisde kullandığımızyazılımlardan birtanesi aşağıdaki
    gibi bir log çıktısı veriyor.
    Log dosyasında 1 ile 34 arasında her bir hata/ işlem için bir sayı
    numarası basılmakta.
    örnk: 4 --> yetkisiz erişimvb.
    Bende bir script yada uygulama ile bu log dosyasında ki hata
    kodlarını sayısınıalmak istiyorum.

    Yazacağım uygulama log dosyasını okuyup içerisinde kaç numaralı
    hata kodundan kaç adet basıldığını bana ayrı bir çıktı olarak vermeli.

    Örnk: 34 -> 20 adet
               12 -> 12 adet gibi.
     Bir kaç şey konuştuk arkadaşlar ile ama pek çıkamadık işin içinden.
    Keza benim aklıma gelen ve ilk etapda yapmasını istediğim
    şeyyazılabilecek bir metod log dosyasınınyolunu vermek ve bu
    log.txt yi okutup sonucu çıktı olarak başka bri txt dosyasına
    verdirmek.
    Konu hakkında önerileriniz nedir?
    Benimle de paylaşa bilrseniz çok memnun olurum.
    Kolaylıklar Levent "SARI"
    ###########################################
    Log.txt dosyasının içeriği
    23 44 19 27 46 39 32 05 51 26 53 12 21 03 17 07 46 30 32 48 51 06
    35 16 35 12 52 48 07 14 46 29 40 32 31 26 34 21 51 14 47 22 23 38
    21 09 41 31 34 30 33 11 29 51 51 10 43 46 14 20 52 51 44 02 42 05


    _______________________________________________
    Linux-programlama mailing list
    [email protected]
    <mailto:[email protected]>
    https://liste.linux.org.tr/mailman/listinfo/linux-programlama
    Liste kurallari: http://liste.linux.org.tr/kurallar.php




--
*Mother's gonna keep you right here under her wing. / She won't let you fly, but she might let you sing. / Mama's gonna keep baby cozy and warm.*


_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap