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 ]; 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 pa

a
aleidimas: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

P
P” 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’>> $r

r
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