Apache serverio log failo analizė

#!/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 ]en

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

$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" ]en

$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 $[ ! -f $inputfile ]/p>

$DIALOG –title „ERRROR“

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

case $? in

0)

echo „OK“;;

255)

echo „Box closed.“;;

esac

exit 1

elif [ ! -r $[ ! -r $inputfile ]p>

$DIALOG –title „ERRROR“

–msgbox „$inputfile: nneimanoma nuskaityti“ > „/dev/stderr“ 10 40

case $? in

0)

echo „OK“;;

255)

echo „Box closed.“;;

esac

exit 2

fi

fi

#————————————————————————–

d=0

until [ $d = 1[ $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 ppersiunte 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[ $index -lt $n ]> do

if [[ ${byt[[ ${bytesamount[$index]-“ ]];

then

let bytes=bytes+${bytesamount[$index][$index]> fi

let index=index+1

done

if [ $bytes[ $bytes -gt $bytes_in_gb ]

then

echo „Buvo persiusta: $bytes baitu($(($bytes / $bytes_in_gb ))GB)“ >>$rezultfile

elif [ $bytes[ $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 [[ ${by[ $index -lt $n ]} != „-“ ]];

[[ ${bytesamount[$index]bytes+${bytesamount[$index]}

fi

let index=index+1

if [ $pass = 0 ] ;

then

echo „Kli[ $pass = 0 ]sisutu dduomenu kiekis“ >>$rezultfile

echo „———————————————“ >>$rezultfile

pass=1

fi

if [ $bytes -gt $bytes_in_gb ] ;

then

[ $bytes -gt $bytes_in_gb ]baitai(-u) ($(($bytes / $bytes_in_gb ))GB)“ >>$rezultfile

elif [ $bytes -gt 1024 ] ;

then

echo[ $bytes -gt 1024 ]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