14Aug

Viegli apstrādāt / meklēt web lapu meklēšanas vaicājumu virknes no apache baļķiem izmantojot php AWK un sed Linux komandrindas komunālie

6 Parts: Izmantojiet AWK un sed parsēt Apache log failus par lietotāju drukāti meklēšanas vaicājumiem zināmas problēmas Version 2: mazāk komandrindas preprocessing un vairāk php apstrādes ToDo Tips triki & amp;Brīdinājumi Komentāri

Tas HowTo jums parādīs, cik viegli pie Linux komandrindas izanalizēt savu Apache log failus, lai iegūtu meklēšanas string vaicājumu datus, kas lietotājiem veidu, lai atrastu jūsu mājas lapā meklētājprogrammu.Man ir iekļautas php meklēšanas GUI, kā arī par vieglu izmantošanu.

šī informācija bija noderīga?Jā |nē |Man ir vajadzīga palīdzība
Saturs
  • 1 izmantošana AWK un sed parsēt Apache log failus lietotājam drukāti meklēšanas vaicājumu
  • 2 Zināms Problēmas
  • 3 Version 2: Mazāk komandrindas preprocessing un vairāk php apstrāde
  • 4 ToDo
  • 5 Tips triki & amp;Brīdinājumi
  • 6 Komentāri
Reklāmas

Lietot AWK un sed parsēt Apache log failus lietotājam drukāti meklēšanas vaicājumu

Šeit ir izejvielas kods, lai saņemtu darīts darbs.Ņemiet vērā, ka $ TITLE2 būtu jāaizstāj ar to, ko jūs meklējat, BET telpas aizstāj ar "\ +".

Piemēram: "Kā atrast lielu lollypop" būtu "Kā \ + līdz \ + atrast \ + A \ + liels \ + lollypop"

Tas ir tāpēc, ka es plānoju zvanīt no php funkcija, kur es gribuaizpildīt $ TITLE2 kā jūs redzēsiet vēlāk.Es varētu būt likt egrep

vēlāk, bet tad jums nebūs iespēja meklēt gan lapas nosaukumu un vaicājumiem.Mana sākotnējā versija tikai meklēja vaicājumiem, bet es gribēju funkciju es varētu ērti piezvanīt konkrētā lapu un redzēt uz visiem jautājumiem, kas lietotājiem ir drukāti pēdējo nedēļu laikā.

kaķis /var/log/virtualmin/VisiHow.com_access_log |#Get Dati no piekļuves log egrep "(q | p) =" |#use Tikai ierakstus, kas, visticamāk, ir meklēšanas vaicājumiem sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;" | #Do dažas formatēšanas izmaiņas un vissvarīgāk mainīt visas telpasvai uzsver to + egrep -Es "$ TITLE2" | #search par $ TITLE2 AWK "{print $ 11} '| #extract dati tikai tad sed' s / p = / q = / ig '| #handle Yahoo p = AWK -F 'q =' '{print $ 2}' | #grab visus datus, sākot ar Q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20/ / g; "|#reformat cilvēka lasāmā formātā cut -D "& amp;"-f 1 |#strip off citi parametri AWK "{print $ 0"
"}" #add
saite pārtraukumus, jo mēs plānojam izejas uz tīmekļa lapu

šī informācija bija noderīga?Jā |nē |Man ir vajadzīga palīdzība

== Pieņemsim izveidot PHP

HTML GUI iesaiņojuma šo tagad ==

Lai padarītu šo viegli lietojumu mēs vēlamies, lai piekļūtu lietotāja vaicājuma datus no mājas lapas meklēšanas formā.

queries.php

& lt; title & gt; lietotāju vaicājumiem & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;

& lt; forma name = "sform" method = "get" & gt;Meklēt Title: & lt; input size = "80" vērtība = "? & Lt; php echo $ _GET [ 'nosaukums']; & gt;?"name = "Nosaukums" type = "text" & gt;& Lt; input vērtība = "Meklēt" type = "iesniegt" & gt;Padoms: Jūs varat izmantot daļēju nosaukumu vai pat Regex patīk & lt; / forma & gt; "Samsung * bojājumus."

šī informācija bija noderīga?Jā |nē |Man ir vajadzīga palīdzība

$ title = $ _GET [ 'nosaukums'];$ Title = preg_replace( "/ kā / i", "", $ nosaukums);$ TITLE2 = str_replace( "", "\ +", $ nosaukums);$ TITLE2 = str_replace( "_", "\ +", $ TITLE2);

$ bigcmd = & lt; & lt; & lt; EOF

egrep -i "(Q | p) =" |#use Tikai ierakstus, kas, visticamāk, ir meklēšanas vaicājumiem sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;" | #Do dažas formatēšanas izmaiņas un vissvarīgāk mainīt visas telpasvai uzsver to + egrep -i "$ TITLE2" | #search par TITLE2 AWK '{print $ 11}' | sed #extract dati tikai tad 's / p = / q = / ig' | #handle yahoo p = AWK -F"q = ''{ print $ 2} '| #grab visus datus, sākot ar Q = sed' s / q = // g; s / + / / g; s /% 22 /" / g; s /% 20 // g; "|#reformat cilvēka lasāmā formātā cut -D "& amp;"-f 1 |#strip off citi parametri AWK "{print $ 0"
"}" #add
saite pārtraukumus, jo mēs plānojam izejas uz lapas

EOF;

šī informācija bija noderīga?Jā |nē |Man ir vajadzīga palīdzība

ja "{

print Meklē" $ titulu "..."( $ title = "!)";print "kārtējās nedēļas. ..
";print `kaķis /var/log/virtualmin/visihow.com_access_log |#Get Dati no piekļuves log $ bigcmd `;// Mēs atbalstām p = pārāk, jo Yahoo izmanto, ka. .. dīvaini pīle lol par( $ i = 1; $ i & lt; 6; $ i ++){ print "
$ i NEDĒĻAS( S) atpakaļ
";izdrukāt `zcat /var/log/virtualmin/visihow.com_access_log.$i.gz |#Get Dati no piekļuves log $ bigcmd `;}

} & gt?;

šī informācija bija noderīga?Jā |nē |Man ir vajadzīga palīdzība

& lt; / EOF

Zināms Problēmas

grep ir pacelt ierakstus ar atsauču datiem, lai tā atgriežas nevēlamu ierakstus.Piemēram, ja kāds meklē "iPhone" un lietotājs bija par iPhone lapas, tad uzklikšķināt doties uz Samsung lapu, šis kods paceļ iPhone no referrer un tādējādi ietver, ka dati, kas to nevajadzētu darīt.Es strādāju par 2 versiju, kas dara daudz vairāk, un noteikt šo kļūdu, pārvietojot daudz no komandrindas preprocessing uz php.Kodekss būs stulbs, bet sniegs daudz noderīgas un precīzus datus.

šī informācija bija noderīga?Jā |nē |Man ir vajadzīga palīdzība

Versija 2: Mazāk komandrindas preprocessing un vairāk php apstrāde

Šī versija ir šādas priekšrocības / trūkumi:

  • Mazāk komandrindas preprocessing nozīmē vairs koda
  • Vairāk php nozīmē lielāku kontroli un funkcijas
  • ignorē vairākas dublēt pieprasījumus no vienas IP
  • Grāfu vairākus meklēšanu, nevis uzskaitot tos vairākas reizes
  • Show trending informāciju, parādot nedēļas kopsummas
  • izlaidiritināms divs ērtai interesantas lapas
  • Kārtot pēc vaicājuma garuma bija, kas aptuveni nozīmē vairāk populārs lapas parādīt pirmo
  • nedaudz ātri un netīrās javascript & amp;css padarīt divs auto paplašināt detalizētai apskatei

& lt; title & gt; lietotāju vaicājumiem & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;

& lt; forma name = "sform" method = "get" & gt;Meklēt Title: & lt; input size = "80" vērtība = "& lt; php
if( strlen( $ _ GET [ 'nosaukums']) & gt; 0){
echo $ _GET [ 'nosaukums'];
} else{
echo "*"; & lt; br = "" type = "text" & gt;} & gt;? "name = "titulu" / & gt;& Lt; input vērtība = "Meklēt" type = "iesniegt" & gt;
Padoms: Ievadiet *, lai redzētu visu.Jūs varat izmantot daļēju nosaukumu vai pat regex, piemēram, "Samsung * bojājumu." & Lt; / forma & gt;

šī informācija bija noderīga?Jā |nē |Man ir vajadzīga palīdzība

funkcija sortbylen( $ a, $ b){

atgriešanās strlen( $ b) -strlen( $ a);

}

$ title = $ _GET [ 'nosaukums'];$ Title = preg_replace( "/ kā / i", "", $ nosaukums);$ TITLE2 = str_replace( "", "\ +", $ nosaukums);$ TITLE2 = str_replace( "_", "\ +", $ TITLE2);

$ bigcmd = & lt; & lt; & lt; EOF

egrep -i "(Q | p) =" |#use Tikai ierakstus, kas, visticamāk, ir meklēšanas vaicājumiem sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;" | #Do dažas formatēšanas izmaiņas un vissvarīgāk mainīt visas telpasvai uzsver to + AWK "{drukāt $ 1", "$ 7" "$ 11} '| egrep -i" $ TITLE2 "#search par TITLE2

EOF;

šī informācija bija noderīga Jā | Nē | man ir vajadzīga palīdzība
?

if( $ title = "!"){

print "Meklē" $ nosaukumu "...", jo( $ i = 0; $ i & lt; 6; $ i ++){ if( $ i == 0){ $ searchlogdata = `kaķis /var/log/virtualmin/visihow.com_access_log | $ bigcmd`;} else{ $ searchlogdata =` zcat /var/log/virtualmin/visihow.com_access_log.$i.gz | $ bigcmd`;} $ searchlogarray = eksplodēt( "\ n", $ searchlogdata); foreach( $ searchlogarray kā sdata $){ $ logparts = eksplozīvs( "", $ sdata); $ ip = $ logparts [0]; $ url = $ logparts[1]; preg_match( "/( Q | p) =( *).?"( \ & amp; |? $) / ", $ logparts [2], $ sērkociņi);$ Ss = urldecode( $ spēles [2]);$ Ss = str_replace( "+", "", $ ss);if( (strlen( apdares( $ ss)) & gt; 3) & amp; & amp;( preg_match( "# http \: \ / \ / # i", $ ss))!){ // turēt ārā url no vietas meklējumiemif( ($ ip = $ lūpu) ||( $ ss = $ LSS)!){ $ lūpu = $ ip;$ LSS = $ ss;$ Ssdata [ "$ url"] = "$ ss |.";}}} Uasort( $ masīvs, 'sortbylen ");foreach( $ ssdata kā $ key = & gt; $ vērtība){ $ Sarr = eksplodēt( "|", $ vērtība);foreach( $ Sarr kā $ s){ if( strlen( $ s) & gt; 0) $ s2 [$ s] ++;} Arsort( $ s2);foreach( $ s2 kā $ key2 = & gt; $ val2){ $ urldata [$ key] [$ i] = "$ val2: $ key2
".$ STOT [$ key] [$ i] + = $ val2;} Unset( $ s2);} Unset( $ ssdata);} Foreach( $ urldata kā $ url = & gt; $ weekdata){ print " & lt; a target =" _ blank "href =" $ url "& gt; $ url & lt; / a & gt;
";$ Wk = 0;... Foreach( $ weekdata kā $ nedēļā){ print "
" $ wk ++ "NEDĒĻA( S) AGO: Kopā meklējumi =" $ 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; augstums: 100 pikseļu; robeža: 1px solid pelēka; pārplūde: pārvietojieties "& gt; $ nedēļā";}}}

& gt?;

šī informācija bija noderīga?Jā |nē |Man ir vajadzīga palīdzība

& lt; / EOF

ToDo

Kārtot pēc vaicājumu garuma kā sekundāru veida, ar garākiem vaicājumus pirmais

tas arī viss.Es labprāt vēlētos dzirdēt jūsu pieredzi ar šo kodu vai ierosinājumus par uzlabojumiem.

Tips triki & amp;Brīdinājumi

  • Piezīme: Es atbalstu p = kā arī standartnovirze q = jo Yahoo ir nepāra pīle tas izmanto p =
  • Version 2 php ir sarežģītāka, un man bija kodēšanas ātri, lai daži no mainīgajiemnosaukumi tika izvēlēti slikti.lūdzu nesūdzas par savu brīvo kodu.Bet, ja jūs vēlaties, lai noteikt to uz augšu un dokumentē to un pievienojiet to wiki kā 3 versija, kas būtu fantastiski:) maksāt to uz priekšu!
  • Ja Jums ir problēmas ar kādu no šiem soļiem, uzdot jautājumu plašāku palīdzību, vai ievietot komentāru sadaļā zemāk.

Komentāri

VisiHow atzinīgi Visi komentāri .Ja jūs nevēlaties būt anonīms, reģistrēt vai pieteikties. Tas ir bezmaksas.




Daniel
Featured Autors
69. pants Started 24,290 punkti
2,601 pantu labojumus
Daniels ir Featured autors ar VisiHow.Daniel ir sasniegusi līmeni, "Leitnants" ar 24,290 punktiem.Daniel ir sākusi 69 rakstus un izgatavoti 2,601 rakstu labojumus.17,578 cilvēki lasa Daniēla rakstu iemaksas.
Uzdot Daniel
Daniel : Sveiki, mans vārds ir Daniels.
Daniel : Vai es varu jums palīdzēt ar savu problēmu par "Viegli apstrādāt / meklēt tīmekļa vietni meklēšanas vaicājumu virknes no apache baļķiem izmantojot php AWK un sed Linux komandrindas komunālie"?
Pieņemt