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]
<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