Apache serverio log failo analizė

InformatikaProgramaVidutinio ilgio1 316 žodžių7 min. skaitymo

#!/bin/sh

DIALOG=${DIALOG=dialog}

declare bytes_in_gb=1048576

declare procentai=100

laikinas=TMP

laikinas2=TMP2

declare -a lines declare -a bytesamount

processLine(){

line=”$@”

if [ „$1” == „” ]; then

$DIALOG –title „DUOMENU NUSKAITYMAS”

–inputbox „Iveskite log failo pavadinima:” 18 45 2> /tmp/inputbox.tmp.$$

retval=$?

input=`cat /tmp/inputbox.tmp.$$`

rm -f /tmp/inputbox.tmp.$$

case $retval in

0)

echo „Input string is ‘$input'”;;

1)

echo „Cancel pressed.”;;

255)

echo „Box closed.”;;

esac inputfile=”$input”

if [ ! -f $inputfile ]; then

$DIALOG –title „ERRROR”

–msgbox „$inputfile : neegzistuoja” > „/dev/stderr” 10 40

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac exit 1

elif [ ! -r $inputfile ]; then

$DIALOG –title „ERRROR”

–msgbox „$inputfile: neimanoma nuskaityti” > „/dev/stderr” 10 40

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac exit 2

fi

elif [ „$1” == „–help” ]; then

$DIALOG –title „HELP”

–msgbox „Programos paleidimas:n sh n.shn sh n.sh logn n n n n

… created By Nerijus Kliauba ” 15 50

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac exit else inputfile=$1

if [ ! -f $inputfile ]; then

$DIALOG –title „ERRROR”

–msgbox „$inputfile : neegzistuoja” > „/dev/stderr” 10 40

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac exit 1

elif [ ! -r $inputfile ]; then

$DIALOG –title „ERRROR”

–msgbox „$inputfile: neimanoma nuskaityti” > „/dev/stderr” 10 40

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac exit 2

fi fi

d=0

until [ $d = 1 ];

do

$DIALOG –clear –radiolist „MENIU” 15 90 8

„1” „Narsykliu statistika” off

„2” „OS daznumas procentais ” off

„3” „Operacines sistemos” off

„4” „Kiek duomenu persiunte serveris” off

„5” „Kokius metodus naudojo kiekvienas IP” off

„6” „Kiekvieno lankytojo persiustas kiekis duomenu” off

„7” „Suvestine” off

„8” „Iseiti” off 2>/tmp/tmp.$$

input=`cat /tmp/tmp.$$`

case $input in

1)

rezultfile=”IE”

rezultfile2=”IEPROC”

echo „”>$rezultfile echo „”>$rezultfile2

echo „”>$laikinas

zcat $inputfile | grep „Mozilla/4.0” | grep „(compatible;” |grep „MSIE” | cut -f14,15 -d ” ” | sort | uniq -c | sort -g -r>>$laikinas zcat $inputfile | grep „Mozilla/5.0” | grep „Firefox” | cut -f21 -d ” „| sort | uniq -c | sort -g -r>>$laikinas zcat $inputfile | grep „Opera”| grep „Mozilla”| cut -f20,21,21,22 -d ” ” | sort | uniq -c | sort -g -r>>$laikinas zcat $inputfile | grep „Opera”| cut -f12 -d ” „| sort | uniq -c | sort -g -r >>$laikinas zcat $inputfile | grep „Mozilla/5.0” | grep „Firefox” | cut -f20 -d ” ” | sort | uniq -c | sort -g -r>>$laikinas zcat $inputfile | grep „Mozilla/5.0” | grep „Firefox” | cut -f19 -d ” ” | sort | uniq -c | sort -g -r>>$laikinas

all=0

all=$(zcat $inputfile | wc -l)

let all=all-2

echo „Viso: $all prisijungimai”>>$rezultfile echo >>$rezultfile

cat $laikinas |grep „MSIE” |grep ” 2 (compatible; MSIE” -v | cut -f1 -d ” ” >>$rezultfile2

cat $laikinas |grep „Firefox” | cut -f1 -d ” ” >>$rezultfile2

cat $laikinas |grep „Opera” | cut -f1 -d ” ” >>$rezultfile2

echo ” $(zcat $inputfile | grep „Opera” -v | grep „Firefox” -v | grep „MSIE” -v| wc -l) Other” >>$rezultfile2

echo „Narsykliu statistika: ” >>$rezultfile echo „————————–” >>$rezultfile cat $rezultfile2 |sed ‘/”/s///g’>> $rezultfile

echo „”>$rezultfile2

echo „Viso: $all prisijungimai”>>$rezultfile2

echo >>$rezultfile2

echo „Narsykle | Daznumas procentais ” >>$rezultfile2

echo „—————————————–” >>$rezultfile2

echo -n ” MSIE | „>>$rezultfile2

echo „$(($(zcat $inputfile | grep „MSIE” | wc -l)*100))/$all” |bc -l >>$rezultfile2

echo -n ” OPERA | „>>$rezultfile2

echo „$(($(zcat $inputfile | grep „Opera” | wc -l)*100))/$all” |bc -l >>$rezultfile2

echo -n ” FIREFOX | „>>$rezultfile2

echo „$(($(zcat $inputfile | grep „Firefox” | wc -l)*100))/$all” |bc -l >>$rezultfile2

echo -n ” Other | „>>$rezultfile2

echo „$(($(zcat $inputfile | grep „MSIE” -v | grep „Opera” -v | grep „Firefox” -v | wc -l)*100))/$all” |bc -l >>$rezultfile2

echo -n „—————————————–” >>$rezultfile2

rm $laikinas

$DIALOG –title „RESULTS:”

–msgbox „nRezultatus rasite failuose: n$rezultfilen$rezultfile2” 10 50

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac;;

2)

rezultfile=”OSPROC”

echo „”>$rezultfile all=0

all=$(zcat $inputfile | wc -l)

let all=all-2

echo „Viso: $all prisijungimai”>>$rezultfile echo >>$rezultfile echo „Operacine sistema | Daznumas procentais ” >>$rezultfile echo „—————————————–” >>$rezultfile echo -n ” Windows | „>>$rezultfile echo „$(($(zcat $inputfile | grep „Windows” | wc -l)*100))/$all” |bc -l >>$rezultfile echo -n ” Linux | „>>$rezultfile echo „$(($(zcat $inputfile | grep „Linux” | wc -l)*100))/$all” |bc -l >>$rezultfile echo -n ” Mac OS | „>>$rezultfile echo „$(($(zcat $inputfile | grep „Mac OS” | wc -l)*100))/$all” |bc -l >>$rezultfile echo -n ” FreeBSD | „>>$rezultfile echo „$(($(zcat $inputfile | grep „FreeBSD” | wc -l)*100))/$all” |bc -l >>$rezultfile echo -n ” Other | „>>$rezultfile echo „$(($(zcat $inputfile | grep „Windows” -v | grep „Linux” -v | grep „Mac OS” -v | grep „FreeBSD” -v | wc -l)*100))/$all” |bc -l >>$rezultfile echo -n „—————————————–” >>$rezultfile

$DIALOG –title „RESULTS:”

–msgbox „n Rezultatus rasite faile: $rezultfile” 10 50

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac;;

3)

rezultfile=”OS”

echo „”>$rezultfile all=0

all=$(zcat $inputfile | wc -l)

let all=all-2

echo „Viso: $all prisijungimai”>>$rezultfile echo >>$rezultfile echo ” Operaciniu sistemu statistika:” >>$rezultfile echo ” ——————————” >>$rezultfile echo ” Windows: $(zcat $inputfile | grep „Windows” | wc -l)” >>$rezultfile echo ” Linux: $(zcat $inputfile | grep „Linux” | wc -l)” >>$rezultfile echo ” Mac_OS: $(zcat $inputfile | grep „Mac OS” | wc -l)” >>$rezultfile echo ” FreeBSD: $(zcat $inputfile | grep „FreeBSD” | wc -l)” >>$rezultfile echo ” Other: $(zcat $inputfile | grep „Windows” -v | grep „Linux” -v | grep „Mac OS” -v | grep „FreeBSD” -v | wc -l)” >>$rezultfile echo ” ——————————” >>$rezultfile

$DIALOG –title „RESULTS:”

–msgbox „n Rezultatus rasite faile: $rezultfile” 10 50

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac;;

4)rezultfile=”SERVTRANSFER”

echo „”>$laikinas echo „”>$rezultfile

zcat $inputfile | cut -f10 -d ” ” >>$laikinas bytesamount=(`cat „$laikinas”`)

n=${#bytesamount[*]}

index=0

bytes=0

while [ $index -lt $n ];

do if [[ ${bytesamount[$index]} != „-” ]];

then let bytes=bytes+${bytesamount[$index]}

fi let index=index+1

done

if [ $bytes -gt $bytes_in_gb ] ;

then echo „Buvo persiusta: $bytes baitu($(($bytes / $bytes_in_gb ))GB)” >>$rezultfile elif [ $bytes -gt 1024 ] ;

then echo „Buvo persiusta: $bytes baitu($(($bytes / 1024))MB”>>$rezultfile else echo „Buvo persiusta: $bytes baitu”>>$rezultfile fi rm $laikinas

$DIALOG –title „RESULTS:”

–msgbox „n Rezultatus rasite faile: $rezultfile” 10 50

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac;;

5)

rezultfile=”IPMETOD”

echo „” >$rezultfile echo „Kliento IP | Metdodas naudotas” >>$rezultfile echo „——————————” >>$rezultfile echo „” >>$rezultfile zcat $inputfile | cut -f1,6 -d ” ” | sort | uniq >>$rezultfile

$DIALOG –title „RESULTS:”

–msgbox „n Rezultatus rasite faile: $rezultfile.” 10 50

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac;;

8)

$DIALOG –title „EXIT”

–msgbox „PROGRAM CLOSED” 10 40

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac d=1;;

7)

rezultfile=”RESIUME”

echo „”>$rezultfile echo „Rezultatai analizuojant log’o faila ‘$inputfile’:” >>$rezultfile echo >>$rezultfile echo „Pradzia: „$(zcat $inputfile |head -2 | awk ‘{print $4}’ | sed ‘s/[//’| sed ‘s/:/ at /’) >>$rezultfile echo „Pabaiga: „$(zcat $inputfile |tail -2 | awk ‘{print $4}’ | sed ‘s/[//’| sed ‘s/:/ at /’) >>$rezultfile echo >>$rezultfile ac=0

ac=$(zcat $inputfile | wc -l)

let ac=ac-2

echo „Per si laika buvo: $ac prisijungimai”>>$rezultfile echo >>$rezultfile echo „Dazniausiai perziureti puslapiai: „>>$rezultfile echo „———————————–„>>$rezultfile zcat $inputfile |awk ‘{print $7}’ | sort | uniq -c | sort -rn | grep „.html” | head >>$rezultfile echo >>$rezultfile echo „Labiausiai dominusieji failai: „>>$rezultfile echo „————————————„>>$rezultfile zcat $inputfile |awk ‘{print $7}’ | sort | uniq -c | sort -rn | head >>$rezultfile

$DIALOG –title „RESULTS:”

–msgbox „n Rezultatus rasite faile: $rezultfile” 10 50

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac;;

6)

rezultfile=”IPTRANSFER”

pass=0

echo „”>$rezultfile echo „”>$laikinas echo „”>$laikinas2

zcat $inputfile | cut -f1 -d ” ” |sort | uniq >>$laikinas

exec 3<&0

exec 0<$laikinas

$DIALOG –title „DEMESIO” –backtitle „Nerijus Kliauba”

–infobox „Prasome palaukti, programa vykdo Jusu uzklausa…..” 7 50 ; read

while read line do echo „”>$laikinas2

processLine $line zcat $inputfile | grep „$line” | cut -f10 -d ” „>>$laikinas2

bytesamount=(`cat „$laikinas2″`)

n=${#bytesamount[*]}

index=0

bytes=0

while [ $index -lt $n ];

do if [[ ${bytesamount[$index]} != „-” ]];

then let bytes=bytes+${bytesamount[$index]}

fi let index=index+1

done

if [ $pass = 0 ] ;

then echo „Kliento IP | Parsisutu duomenu kiekis” >>$rezultfile echo „———————————————” >>$rezultfile pass=1

fi

if [ $bytes -gt $bytes_in_gb ] ;

then echo „$line | $bytes baitai(-u) ($(($bytes / $bytes_in_gb ))GB)” >>$rezultfile elif [ $bytes -gt 1024 ] ;

then echo „$line | $bytes baitai(-u) ($(($bytes / 1024))MB)”>>$rezultfile else echo „$line | $bytes baitai(-u)”>>$rezultfile fi

done exec 0<&3

rm $laikinas rm $laikinas2

$DIALOG –title „RESULTS:”

–msgbox „n Rezultatus rasite faile: $rezultfile” 10 50

case $? in

0)

echo „OK”;;

255)

echo „Box closed.”;;

esac;;

esac

done