xferlog anlaysis

2004/10/25 14:25
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 ^_

#!/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 파일을 정리하도록 권한다.
2004/10/25 14:25 2004/10/25 14:25
Posted by 마누

트랙백 보낼 주소 : http://manuz.com/trackback/54

댓글을 달아주세요

  1. 2004/10/27 04:23
    댓글 주소 수정/삭제 댓글
    모하냐=.=?
  2. 2004/11/13 21:09
    댓글 주소 수정/삭제 댓글
    private 폴더와 특정 섹션을 제외시키는 알고리즘이 추가되었습니다..
    추가된건 두줄 뿐이지만 -_-;; 조만간 업데이트 하겠습니다.
    또 시간이 생기면 모든 서버에 적용할수 있도록.. 약간 수정하여 공식 배포하도록 할께요 :)
    0DAY 로 프리쳐볼까 ㅋㅋㅋ


행복합니다^^
요즘은 행복하다고 말하기 힘듭니다. 힘든건 힘든거니까요. 하지만 조만간 다시 웃을겁니다. 저에겐 웃고 행복한 모습이 제일 잘 어울리는 것 같거든요.

카테고리

전체 (143)
일상다반사 (40)
삶이 있는 고민 (41)
웹표준 및 웹접근성 (1)
기록들... (0)
Meditation (15)
WEB (11)
IT (26)
영상 (8)

글 보관함

달력

«   2010/07   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Total : 187133
Today : 150 Yesterday : 169