xferlog 파일을 분석하여서 어떠한 릴리즈를 가장 많이 다운받았는지 리스트를 제공하는 스크립트이다.
(@|SITE|) SITE^TOPTRAFFIC + toptraffic today in SITE (2004/10/25 00:00 - 2004/10/25 05:10)
(@|SITE|) SITE^TOPTRAFFIC ... [1] 1415 megaB ./!. Desperate.Housewives.S01E04.HDTV.XviD-LOL ^_
(@|SITE|) SITE^TOPTRAFFIC ... [2] 1001 megaB ./!. Scaler_USA_XBOX ^_
(@|SITE|) SITE^TOPTRAFFIC ... [3] 776 megaB ./!. Cold.Case.S02E04.HDTV.XviD-LOL ^_
(@|SITE|) SITE^TOPTRAFFIC ... [4] 716 megaB ./!. Steve.Harveys.Big.Time.S02E07.PDTV.XviD-LOL ^_
(@|SITE|) SITE^TOPTRAFFIC ... [5] 712 megaB ./!. Han.Kang.Soo.Ta.Ryeong.E08.KOR.2004.SDTVRiP.XViD-iCEDRAMA ^_
(@|SITE|) SITE^TOPTRAFFIC ... [1] 1415 megaB ./!. Desperate.Housewives.S01E04.HDTV.XviD-LOL ^_
(@|SITE|) SITE^TOPTRAFFIC ... [2] 1001 megaB ./!. Scaler_USA_XBOX ^_
(@|SITE|) SITE^TOPTRAFFIC ... [3] 776 megaB ./!. Cold.Case.S02E04.HDTV.XviD-LOL ^_
(@|SITE|) SITE^TOPTRAFFIC ... [4] 716 megaB ./!. Steve.Harveys.Big.Time.S02E07.PDTV.XviD-LOL ^_
(@|SITE|) SITE^TOPTRAFFIC ... [5] 712 megaB ./!. Han.Kang.Soo.Ta.Ryeong.E08.KOR.2004.SDTVRiP.XViD-iCEDRAMA ^_
#!/bin/sh
[ -e /glftpd/bin/releasetr.tmp ] && /glftpd/bin/rm -f /glftpd/bin/releasetr.tmp
[ -e /glftpd/bin/releasetr.tmp1 ] && /glftpd/bin/rm -f /glftpd/bin/releasetr.tmp1
/glftpd/bin/grep " o " /glftpd/ftp-data/logs/xferlog | tr -s ' ' | cut -d ' ' -f8-9 > /glftpd/bin/releasetr.tmp
IFS='
'
for line in `/glftpd/bin/cat /glftpd/bin/releasetr.tmp`; do
temp1=`/glftpd/bin/echo $line | /glftpd/bin/cut -d ' ' -f1`
temp2=`/glftpd/bin/echo $line | /glftpd/bin/cut -d ' ' -f2`
temp2=`echo "$temp2" | sed -e "s%/[cC][dD].%%"`
temp2=`echo "$temp2" | sed -e "s%/[dD][iI][sS][cCkK].%%"`
temp2=`echo "$temp2" | sed -e "s%/[sS][aA][mM][pP][lL][eE]%%"`
temp3=`/glftpd/bin/dirname $temp2`
temp4=`/glftpd/bin/basename $temp3`
echo "$temp4" "$temp1" >> /glftpd/bin/releasetr.tmp1
done
/glftpd/bin/cat /glftpd/bin/releasetr.tmp1 | /glftpd/bin/sort > /glftpd/bin/releasetr.tmp
rm -f /glftpd/bin/releasetr.tmp1
relnameold=""
sizeold=0
for line in `/glftpd/bin/cat /glftpd/bin/releasetr.tmp`; do
relname=`/glftpd/bin/echo $line | /glftpd/bin/cut -d ' ' -f1`
size=`/glftpd/bin/echo $line | /glftpd/bin/cut -d ' ' -f2`
if [ "$relnameold" = "$relname" ]; then
sizeold=$(expr "$sizeold" + "$size")
else
#echo "$sizeold $relnameold" >> /glftpd/bin/releasetr.tmp1
#echo "$sizeold $relnameold"
printf "%s %s\n" "$sizeold" "$relnameold" >> /glftpd/bin/releasetr.tmp1
sizeold=0
fi
relnameold="$relname"
done
/glftpd/bin/cat /glftpd/bin/releasetr.tmp1 | /glftpd/bin/sort -gr > /glftpd/bin/releasetr.tmp
echo `date "+%a %b %e %T %Y"` "TOPTR: \"+ toptraffic today in this site (`date "+%Y/%m/%d"` 00:00 - `date "+%Y/%m/%d %H:%M"`)\"" >> /glftpd/ftp-data/logs/glftpd.log
pos=1
for toprel in `/glftpd/bin/cat /glftpd/bin/releasetr.tmp | /glftpd/bin/sort -gr | /glftpd/bin/head -5`; do
size=`/glftpd/bin/echo $toprel | /glftpd/bin/cut -d ' ' -f1`
sizegb=$(expr "$size" / 1024 / 1024)
relname=`/glftpd/bin/echo $toprel | /glftpd/bin/cut -d ' ' -f2`
echo "$size $relname"
echo `date "+%a %b %e %T %Y"` "TOPTR: \"... \[^B$pos^B\] ^B$sizegb^B megaB ./!. ^B$relname^B ^_\"" >> /glftpd/ftp-data/logs/glftpd.log
pos=$[++pos]
done
*CAUTION*
이 쉘프로그램은 서버에 약간의 영향을 줄 수 있으며
xferlog 파일이 너무 클 경우에는 상당한 시간이 걸릴수 있다.
권장하는 것은 logcleaner 를 이용하여
매일 0시에 xferlog 파일을 정리하도록 권한다.