Selam,
Bash ile yapmak isterseniz;
haydar@django:/tmp/haydar$ cat $file|tr ' ' '\n'|sort|uniq -c|sort -r
6 51
4 46
3 32
3 21
3 14
2 52
2 48
2 44
2 35
2 34
2 31
2 30
2 29
2 26
2 23
2 12
2 07
2 05
1 53
1 47
1 43
1 42
1 41
1 40
1 39
1 38
1 33
1 27
1 22
1 20
1 19
1 17
1 16
1 11
1 10
1 09
1 06
1 03
1 02
--
# Haydar Acer
http://haydar.tk
http://facebook.com/devvrim
http://twitter.com/devvrim
http://www.linkedin.com/in/haydaracer
2013/8/30 Levent SARI <[email protected]>
> 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 .'\');' . ' '. '<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) . ' ';
> echo str_replace("#", " ",$element) . ' '.'<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]> yazdı:
>
>> Arkadaşlar ofisde kullandığımız yazılımlardan bir tanesi 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şim vb.
>> Bende bir script ya da 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ın yolunu 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]
>> 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
> [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
>
>
_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php