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=0bytes=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[$index]one
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)“ >>$rezultfileelif [ $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