14Aug

Könnyen elemez / keresés egy weboldal keresésnek húrok apache naplók segítségével php awk és a sed Linux parancssori segédprogramok

click fraud protection
6 Parts: használata awk és a sed elemezni apache log fájlokat a felhasználó beírt keresési lekérdezéseket Ismert problémák Version 2: Kevesebb parancssor előfeldolgozás és php feldolgozó ToDo Tippek trükkök & amp;Figyelmeztetések Megjegyzések

ez a HOGYAN megmutatja, hogyan kell egyszerűen a Linux parancssor elemezni az Apache naplófájlok, hogy a keresett szöveget keresett adat, hogy a felhasználók írja, hogy megtalálják a weboldal egy keresőprogram.Én is egy php keresés GUI valamint az egyszerű kezelhetőség érdekében.

Hasznos volt ez?Igen |nem |Segítségre van szükségem
Tartalom
  • 1 használata awk és a sed elemezni apache log fájlokat a felhasználó beírt keresési lekérdezések
  • 2 Ismert problémák
  • 3 Version 2: Kevesebb parancssor előfeldolgozás és php feldolgozó
  • 4 ToDo
  • 5 tippek trükkök & amp;Figyelmeztetések
  • 6 hozzászólás
Ad

használata awk és a sed elemezni apache log fájlokat a felhasználó beírt keresési lekérdezések

instagram viewer

Itt nyers kódot kap a munkát elvégezni.Jegyezzük meg, hogy $ title2 kell cserélni az, amit keres, de terek helyén "\ +".

Például: "Hogyan talál egy nagy lollypop" lenne "Hogyan \ + a \ + találni \ + a \ + nagy \ + lollypop"

Ez azért van, mert azt tervezem, hogy hívja egy php függvény, ahol énnépességnövekedés $ title2 mint később látni fogjuk.Azt volna a egrep

később, de akkor nem azt a lehetőséget keres mindkét oldal címét és a lekérdezések.Az eredeti változat most keresett lekérdezéseket, de szerettem volna egy funkciója Én könnyen hívni az adott oldalt, és az összes lekérdezést, hogy a felhasználók gépelt az elmúlt hetekben.

macska /var/log/virtualmin/VisiHow.com_access_log |#Get Adatokat a hozzáférési napló egrep "(q | p) =" |#use Csak azok a rekordok, hogy valószínűleg keresőkifejezések sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do néhány formázási módosításokat, és ami a legfontosabb változtatni terekvagy aláhúzással + egrep -I "$ title2" | #search a $ title2 awk '{print $ 11}' | #extract csak a keresési adatok sed 's / p = / q = / ig' | #handle Yahoo p = awk -F 'q =' '{print $ 2}' | #grab összes adatot tól q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20/ / g; '|#reformat az ember által olvasható formátumban cut -d "& amp;"-f 1 |#strip ki más paraméterek awk '{print $ 0 "
"}' #add
kapcsolat szünetek, mert azt tervezi, hogy a kimenetet egy weboldal

Hasznos volt ez?Igen |nem |Segítségre van szükségem

== Hozzunk létre egy PHP

HTML GUI wrapper erre most ==

Ahhoz, hogy ez könnyen használati szeretnénk elérni a felhasználói lekérdezés adatokat egy weboldal keresési forma.

queries.php

& lt; title & gt; Felhasználói lekérdezések & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;

& lt; form name = "sform" method = "get" & gt;Keresés cím: & lt; input size = "80" value = "& lt;? Php echo $ _GET [ 'title'];? & Gt;"name = "title" type = "text" & gt;& Lt; input value = "Keresés" type = "submit" & gt;TIPP: Használhatja részleges címet, vagy akár a regex, mint a "Samsung. * Kár" & lt; / form & gt;

Hasznos volt ez?Igen |nem |Segítségre van szükségem

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

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

egrep -i "(q | p) =" |#use Csak azok a rekordok, hogy valószínűleg keresőkifejezések sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do néhány formázási módosításokat, és ami a legfontosabb változtatni terekvagy aláhúzással + egrep -i "$ title2" | #search az title2 awk '{print $ 11}' | #extract csak a keresési adatok sed 's / p = / q = / ig' | #handle yahoo p = awk -F'q =' '{print $ 2}' | #grab összes adatot tól q = sed 's / q = // g; s / + / / g; s /% 22 / "/ g; s /% 20 // g; '|#reformat az ember által olvasható formátumban cut -d "& amp;"-f 1 |#strip ki más paraméterek awk '{print $ 0 "
"}' #add
kapcsolat szünetek, mert azt tervezi, hogy a kimenetet egy weboldal

EOF;

Hasznos volt ez?Igen |nem |Segítségre van szükségem

if( $ title! = ""){ Print

"Keresés:" $ title "...";print "aktuális hét. ..
";print `cat /var/log/virtualmin/visihow.com_access_log |#Get Adatokat a hozzáférési napló $ bigcmd `;// Támogatjuk p = túl, mert yahoo használja, hogy. .. furcsa kacsa lol for( $ i = 1; $ i & lt; 6; $ i ++){ print "$ i
hét( S) AGO
";print 'zcat /var/log/virtualmin/visihow.com_access_log.$i.gz |#Get Adatokat a hozzáférési napló $ bigcmd `;}}

? & Gt;

Hasznos volt ez?Igen |nem |Segítségre van szükségem

& lt; / EOF

Ismert problémák

A grep felvette rekordok hivatkozási adatokat, így visszatér a nem kívánt rekordokat.Például, ha valaki rákeres a "iPhone" és a felhasználó volt egy iPhone oldalt, majd kattintott menni a Samsung oldalon ezt a kódot felveszi az iPhone az ajánló és így magában foglalja, hogy az adatok, amelyeket nem kellene.Én dolgozom 2-es verziója, amely nem sokkal több, és javítja a hibát mozgatásával sok a parancssor előfeldolgozó a php.A kód lesz tompaszög, de ad sokkal hasznos és pontos adatokat.

Hasznos volt ez?Igen |nem |Segítségre van szükségem

Version 2: Kevesebb parancssor előfeldolgozás és php feldolgozó

Ez a verzió a következő előnyök / hátrányok:

  • Kevesebb parancssor előfeldolgozás ez hosszabb kódot
  • több php többet jelent ellenőrzési és funkciók
  • Figyelmen kívül hagyja a több példányban lévő azonos ip
  • számít több keresés helyett felsoroljuk őket többször
  • mutatása trend információk megjelenítésével heti összesítés
  • kimeneta görgethető divs egyszerű megtekintését a népszerű oldalak
  • Mi szerint legyen sorolva keresett hosszúságú összesen, ami körülbelül azt jelenti, több népszerű oldalakon első
  • Egy kis gyors és piszkos javascript & amp;css, hogy a divs automatikus nagyítás részletes megtekintésére

& lt; title & gt; Felhasználói lekérdezések & lt; / title & gt;& Lt; meta name = "robots" content = "noindex" & gt;

& lt; form name = "sform" method = "get" & gt;Keresés cím: & lt; input size = "80" value = "& lt;? Php
if( strlen( $ _ GET [ 'title']) & gt; 0){
echo $ _GET [ 'title'];
} else{
echo "*"; & lt; br = "" type = "text" & gt;}? & gt; "name = "title" / & gt;& Lt; input value = "Keresés" type = "submit" & gt;
TIPP: Írja * látni mindent.Használhatja részleges címet, vagy akár a regex, mint a "Samsung. * Kár" & lt; / form & gt;

Hasznos volt ez?Igen |nem |Segítségre van szükségem

funkció sortbylen( $ a, $ b){

visszatérő strlen( $ b) -strlen( $ a);

}

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

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

egrep -i "(q | p) =" |#use Csak azok a rekordok, hogy valószínűleg keresőkifejezések sed 's /% 22 / "/ g; s /% 20 / + / g; s / _ / + / g;' | #Do néhány formázási módosításokat, és ami a legfontosabb változtatni terekvagy aláhúzással + awk '{print $ 1 "" 7 $ "" $ 11}' | egrep -i "$ title2" #search az title2

EOF;

hasznos volt ez? Igen | Nem | Segítségre van szükségem

if( $ title! = ""){

print "Keresés:" $ title "..."; 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 = explode( "\ n", $ searchlogdata) foreach( $ searchlogarray mint $ Sdata){ $ logparts = explode( "", $ Sdata); $ ip = $ logparts [0]; $ url = $ logparts[1]; preg_match( "/( q | p) =( . *?)?"( \ & amp; | $) / ", $ logparts [2], $ illeszkedik);$ Ss = urldecode( $ matches [2]);$ Ss = str_replace( "+", "", $ ss);if( (strlen( trim( $ ss)) & gt; 3) & amp; & amp;( ! preg_match( "# http \: \ / \ / # i", $ ss))){ // távol tartani url-re webhelykereséseketif( ($ ip! = $ ajak) ||( $ ss! = $ ip)){ $ ajak = $ ip;$ Ip = $ ss;$ Ssdata [ "$ url"]. = "$ Ss |";}}} Uasort( $ array "sortbylen ');foreach( $ ssdata as $ kulcs = & gt; $ value){ $ Sarr = explode( "|", $ value);foreach( $ Sarr mint $ s){ if( strlen( $ s) & gt; 0) $ s2 [$ s] ++;} Arsort( $ s2);foreach( $ s2 mint $ kulcs2 = & gt; $ ért2){ $ urldata [$ kulcs] [$ i]. = "$ ért2: $ kulcs2
";$ STOT [$ kulcs] [$ i] + = $ ért2;} Unset( $ s2);} Unset( $ ssdata);} Foreach( $ urldata mint $ url = & gt; $ weekdata){ print " & lt; a target =" _ blank "href =" $ url "& gt; $ url & lt; / a & gt;
";$ Wk = 0;foreach( $ weekdata $ -os heti){ print "
". $ wk ++. "HÉT( S) AGO: Összes keresések =". $ 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 szürke túlcsordulás: scroll "& gt; $ héten";}}}

? & Gt;

Hasznos volt ez?Igen |nem |Segítségre van szükségem

& lt; / EOF

ToDo

Rendezés lekérdezés hossza másodlagos rendezés, hosszabb lekérdezések első

Ennyi.Szeretném hallani a tapasztalatokat ezzel a kóddal, vagy javaslatokat a fejlesztésre.

Tippek trükkök & amp;Figyelmeztetések

  • Megjegyzés: Támogatom p = is, és a standard q = mert a Yahoo, hogy a páratlan kacsa ez használ p =
  • Version 2 php bonyolultabb és én kódolási gyors, így egyes változókneveket választottak rosszul.ne panaszkodnak, mint a szabad kódot.De ha azt akarjuk, hogy rögzítse, és dokumentáljuk, és add meg a wiki a 3-as verzió, hogy fantasztikus lenne:) kifizetni előre!
  • Ha problémája van ezekkel lépést, egy kérdést több segítséget, vagy írjon a hozzászólások szakaszt alább.

hozzászólás

VisiHow üdvözli hozzászólásai .Ha nem szeretné, hogy névtelen, regisztráljon vagy jelentkezzen be. Ez ingyenes.




Daniel
Kiemelt Szerző
69 cikk lépések
2601 cikk Módosítások
24290 pontok
Daniel egy kiemelt szerzője VisiHow.Daniel elérte a szintet "hadnagy" a 24290 pont.Daniel elkezdte 69. cikk és készült 2601 cikket szerkesztést.17578 ember olvasta Daniel cikket hozzájárulást.
Kérdezd Daniel
Daniel : Hi, a nevem Daniel.
Daniel : Segíthetek a problémáját a "Könnyen elemez / keresni egy weboldal keresésnek húrok apache naplók segítségével php awk és a sed Linux parancssori segédprogramok"?
Accept