14Aug

Mudah mengurai / mencari halaman Web string permintaan pencarian dari apache log menggunakan php awk dan sed perintah linux utilitas baris

click fraud protection
6 Parts: Gunakan awk dan sed untuk mengurai file log apache bagi pengguna mengetik permintaan pencarian Disebut Masalah Versi 2: Kurang baris perintah preprocessing dan lebih pengolahan php ToDo Tips Trik & amp;Peringatan Komentar

HowTo ini akan menunjukkan cara untuk dengan mudah di baris perintah Linux mengurai file log apache Anda untuk mendapatkan data permintaan pencarian string yang pengguna mengetik untuk menemukan halaman web Anda di mesin pencari.Saya telah menyertakan GUI pencarian php juga untuk memudahkan penggunaan.

Apakah ini bermanfaat?Ya |Tidak ada |Saya butuh bantuan
Isi
  • 1 Gunakan awk dan sed untuk mengurai file log apache bagi pengguna mengetik permintaan pencarian
  • 2 Disebut Masalah
  • 3 Versi 2: Kurang baris perintah preprocessing dan lebih pengolahan php
  • 4 ToDo
  • 5 Tips Trik & amp;Peringatan
  • 6 Komentar
Ad

Gunakan awk dan sed untuk mengurai file log apache bagi pengguna mengetik permintaan pencarian

instagram viewer

Berikut adalah kode baku untuk mendapatkan pekerjaan yang dilakukan.Perhatikan bahwa $ title2 harus mengganti dengan apa yang Anda cari TAPI ruang diganti dengan "\ +".

Misalnya: "Bagaimana menemukan lollypop besar" akan "Bagaimana \ + untuk \ + menemukan \ + a \ + \ besar + lollypop"

Ini karena saya berencana untuk memanggil dari fungsi php, di mana saya akanmengisi $ title2 karena Anda akan lihat nanti.Saya bisa menempatkan

egrep nanti tapi kemudian Anda tidak akan memiliki pilihan untuk mencari kedua judul halaman dan permintaan.Versi asli saya hanya mencari query tapi aku ingin fungsi aku bisa dengan mudah meminta halaman tertentu dan melihat semua permintaan yang pengguna telah diketik selama beberapa minggu terakhir.

cat /var/log/virtualmin/VisiHow.com_access_log |Data #Get dari akses log egrep "(q | p) =" |#use Hanya catatan yang mungkin memiliki permintaan pencarian sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do beberapa perubahan format dan yang paling penting mengubah semua ruangatau menggarisbawahi untuk + egrep -I "$ title2" | #search sebesar $ title2 awk '{print $ 11}' | #extract hanya pencarian data sed 's / p = / q = / ig' | #handle Yahoo p = awk -F 'q =' '{print $ 2}' | #grab semua data dimulai dengan q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20/ / g; '|#reformat ke manusia format yang dapat dibaca cut -d "& amp;"-f 1 |#strip off parameter lainnya awk '{print $ 0 "
"}' #Add
Link istirahat karena kami berencana untuk output ke halaman web

Apakah ini bermanfaat?Ya |Tidak ada |Saya butuh bantuan

== Mari kita membuat GUI wrapper PHP

HTML untuk ini sekarang ==

Untuk membuat ini mudah penggunaan kita ingin mengakses data permintaan pengguna dari bentuk pencarian halaman web.

queries.php

& lt; title & gt; Pengguna Pertanyaan & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;

& lt; bentuk nama = metode "sform" = "mendapatkan" & gt;Cari Judul: & lt; masukan size = "80" value = "? & Lt; php echo $ _GET [ 'title']; & gt;?"name = "title" type = "text" & gt;& Lt; nilai input = "Cari" type = "submit" & gt;PETUNJUK: Anda dapat menggunakan judul parsial atau bahkan regex seperti & lt; / bentuk & gt; "Samsung * kerusakan."

Apakah ini bermanfaat?Ya |Tidak ada |Saya butuh bantuan

$ title = $ _GET [ 'title'];$ Title = preg_replace( "/ bagaimana / i", "", $ title);$ Title2 = str_replace( "", "\ +", $ title);$ Title2 = str_replace( "_", "\ +", $ title2);

$ bigcmd = & lt; & lt; & lt; eof

egrep-i "(q | p) =" |#use Hanya catatan yang mungkin memiliki permintaan pencarian sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do beberapa perubahan format dan yang paling penting mengubah semua ruangatau menggarisbawahi untuk + egrep-i "$ title2" | #search untuk title2 awk '{print $ 11}' | #extract hanya pencarian data sed 's / p = / q = / ig' | #handle yahoo p = awk -F'q =' '{print $ 2}' | #grab semua data dimulai dengan q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20 // g; '|#reformat ke manusia format yang dapat dibaca cut -d "& amp;"-f 1 |#strip off parameter lainnya awk '{print $ 0 "
"}' #Add
Link istirahat karena kami berencana untuk output ke halaman web

EOF;

Apakah ini bermanfaat?Ya |Tidak ada |Saya butuh bantuan

jika "{

cetak Mencari" $ judul "..."( $ title = "!)";print "MINGGU LANCAR. ..
";cetak `cat /var/log/virtualmin/visihow.com_access_log |Data #Get dari akses log $ bigcmd `;// Kami mendukung p = juga karena yahoo menggunakan itu. .. bebek aneh lol for( $ i = 1; $ i & lt; 6; $ i ++){ print "
$ i MINGGU( S) Kejagung
";mencetak `/var/log/virtualmin/visihow.com_access_log.$i.gz zcat |Data #Get dari akses log $ bigcmd `;}

} & gt;

Apakah ini bermanfaat?Ya |Tidak ada |Saya butuh bantuan

& lt; / eof

Disebut Masalah

grep ini mengambil catatan dengan data pengarah sehingga kembali catatan yang tidak diinginkan.Misalnya jika seseorang mencari "iPhone" dan pengguna berada di halaman iPhone kemudian klik untuk pergi ke halaman Samsung, kode ini mengambil iPhone dari pengarah dan dengan demikian termasuk data yang yang seharusnya tidak.Saya bekerja pada versi 2, yang melakukan lebih banyak dan akan memperbaiki bug ini dengan memindahkan banyak preprocessing baris perintah dalam php.Kode akan lebih tumpul, tapi akan memberikan data yang jauh lebih berguna dan akurat.

Apakah ini bermanfaat?Ya |Tidak ada |Saya butuh bantuan

Versi 2: Kurang baris perintah preprocessing dan lebih php pengolahan

Versi ini memiliki berikut keuntungan / kerugian:

  • Kurang baris perintah preprocessing berarti kode lagi
  • lebih php berarti lebih banyak kontrol dan fitur
  • Mengabaikan beberapa duplikat permintaan dari ip yang sama
  • Hitungan beberapa pencarian bukannya daftar mereka beberapa kali
  • Tampilkan tren informasi dengan menampilkan total mingguan
  • outputdi divs digulir agar mudah dilihat dari halaman populer
  • lebih cepat dengan panjang permintaan mencapai, yang kira-kira berarti halaman yang lebih populer menunjukkan pertama
  • sedikit cepat dan kotor javascript & amp;css untuk membuat divs auto memperluas untuk rinci melihat

& lt; title & gt; Pengguna Pertanyaan & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;

& lt; bentuk nama = metode "sform" = "mendapatkan" & gt;Cari Judul:? & Lt; masukan size = "80" value = "& lt; php
jika( strlen( $ _ GET [ 'title']) & gt; 0){
echo $ _GET [ 'title'];
} else{
echo "*"; & lt; br = "" type = "text" & gt;} & gt;? "name = "title" / & gt;& Lt; nilai input = "Cari" type = "submit" & gt;
PETUNJUK: Masukkan * untuk melihat segala sesuatu.Anda dapat menggunakan judul parsial atau bahkan regex seperti "Samsung * kerusakan." & Lt; / bentuk & gt;

Apakah ini bermanfaat?Ya |Tidak ada |Saya butuh bantuan fungsi

sortbylen( $ a, $ b){

pulang strlen( $ b) -strlen( $ a);

}

$ title = $ _GET [ 'title'];$ Title = preg_replace( "/ bagaimana / i", "", $ title);$ Title2 = str_replace( "", "\ +", $ title);$ Title2 = str_replace( "_", "\ +", $ title2);

$ bigcmd = & lt; & lt; & lt; eof

egrep-i "(q | p) =" |#use Hanya catatan yang mungkin memiliki permintaan pencarian sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do beberapa perubahan format dan yang paling penting mengubah semua ruangatau menggarisbawahi untuk + awk '{print $ 1 "" $ 7 "" $ 11}' | egrep-i "$ title2" #search untuk title2

EOF;

Apakah ini bermanfaat Ya | Tidak | saya butuh bantuan
?

if( $ title = "!"){

print "Mencari" $ judul "..."; for( $ i = 0; $ i & lt; 6; $ i ++){ if( $ i == 0){ $ searchlogdata = `cat /var/log/virtualmin/visihow.com_access_log | $ bigcmd`;} else{ $ searchlogdata =` zcat /var/log/virtualmin/visihow.com_access_log.$i.gz | $ bigcmd`;} $ searchlogarray = meledak( "\ n", $ searchlogdata); foreach( $ searchlogarray sebagai $ SDATA){ $ logparts = meledak( "", $ SDATA); $ ip = $ logparts [0]; $ url = $ logparts[1]; preg_match( "/( q | p) =( *).?"( \ & amp; |? $) / ", $ logparts [2], $ pertandingan);$ Ss = urldecode( $ pertandingan [2]);$ Ss = str_replace( "+", "", $ ss);if( (strlen( trim( $ ss)) & gt; 3) & amp; & amp;( preg_match( "# http \: \ / \ / # i", $ ss))!){ // mencegah url dari pencarian situsif( ($ ip = $ lip) ||( $ ss = $ lss)!!){ $ lip = $ ip;$ Lss = $ ss;$ Ssdata [ "$ url"] = "$ ss |".;}}} Uasort( $ array, 'sortbylen');foreach( $ ssdata sebagai $ key = & gt; $ value){ $ sarr = meledak( "|", $ value);foreach( $ sarr sebagai $ s){ if( strlen( $ s) & gt; 0) $ s2 [$ s] ++;} Arsort( $ s2);foreach( $ s2 sebagai $ key2 = & gt; $ VAL2){ $ urldata [$ key] [$ i] = "$ VAL2: $ key2
";.$ STOT [$ key] [$ i] + = $ VAL2;} Unset( $ s2);} Unset( $ ssdata);} Foreach( $ urldata sebagai $ url = & gt; $ weekdata){ print " & lt; target =" _ blank "href =" $ url "& gt; $ url & lt; / a & gt;
";$ Wk = 0;... Foreach( $ weekdata sebagai $ Minggu){ print "
" $ wk ++ "MINGGU( S) Kejagung: Total Pencarian =" $ STOT [$ url] [$ wk-1] "
";.print "& lt; div onmouseover =" this.style.height = 500 "onmouseout =" this.style.height = 100 "& lt; br =" "& gt; & lt; / div & gt; style = 'width: 800px; height: 100px; border: 1px solid abu-abu; overflow: scroll '& gt; minggu $ ";}}}

& gt;

Apakah ini bermanfaat?Ya |Tidak ada |Saya butuh bantuan

& lt; / eof

ToDo

Urut berdasarkan panjang query sebagai semacam sekunder, dengan pertanyaan lagi

pertama

Itu saja.Saya akan senang mendengar pengalaman Anda dengan kode ini atau saran untuk perbaikan.

Tips Trik & amp;Peringatan

  • Catatan: Saya mendukung p = juga dan q standar = karena Yahoo menjadi bebek aneh itu menggunakan p =
  • Version 2 php lebih kompleks dan saya coding cepat sehingga beberapa variabelnama-nama yang dipilih buruk.jangan mengeluh karena kode bebasnya.Tetapi jika Anda ingin memperbaikinya dan dokumen itu dan menambahkannya ke dalam wiki sebagai versi 3 yang akan fantastis:) MEMBAYAR IT MAJU!
  • Jika Anda memiliki masalah dengan langkah-langkah ini, mengajukan pertanyaan untuk bantuan lebih lanjut, atau posting di bagian komentar di bawah.

Komentar

VisiHow menyambut semua komentar .Jika Anda tidak ingin menjadi anonim, daftar atau login. Hal ini bebas.




Daniel
Unggulan Penulis
69 Artikel Dimulai
2601 Pasal Editan
24.290 Tempat
Daniel adalah seorang penulis fitur dengan VisiHow.Daniel telah mencapai tingkat "Letnan" dengan 24.290 poin.Daniel telah dimulai 69 artikel dan membuat 2.601 artikel suntingan.17.578 orang telah membaca kontribusi artikel Daniel.
asli Daniel
Daniel : Hi, nama saya Daniel.
Daniel : Dapatkah saya membantu Anda dengan masalah Anda tentang "Mudah mengurai / search string kueri penelusuran halaman web dari log apache menggunakan php awk dan sed utilitas baris perintah linux"?
Terima