Visitorsでログ取りするスクリプト更新した。

2010年5月25日 スクリプト関連, 雑記

v3になりまひた。いひひ。
変更点は手動でログ取りやっててうっかり何日か取り忘れたときの過去のログの取得機能の追加だけ。

自分の借りてるスペースは1週間分しかログを残してくれないので、その前提で書いてあります。ログのファイル名形式とかも同じ。

使い方はいつも通りワンパターンな引数つけて起動するタイプ。
第一引数はスクリプト自体の動作を指定。0ならログとってブラウザで表示。1ならログとらずにブラウザで表示。無印ならログだけとる。
第二引数は何日前のログをとるのかを指定。1~6まで。自分の借りてるスペースは1週間分しかログを残してくれないので。

なんでこんな突貫工事をしちゃったのかというと、まさに今日、昨日のログを取り忘れていたから。どうせ今後も中途半端な頻度で忘れるので毎度面倒くさがりながら前日分のログを手動で連結するくらいなら突貫工事でもいいから書いちゃえよって思ったの。

古いコードはこことかにある。どこが変わったかとか興味があったらどうぞ。「Visitorsでアクセスログを読み(ry」を書き直し。

#!/bin/sh
### v3
drv () {
    cat access_log$2 >>acl$1.txt
    visitors -A -m 250 acl$1.txt >acl$1.html
}
ext () {
    rnmMt=`date -d ‘2 days ago’ ‘+%Y%m’`
    mv acl1.txt acl$rnmMt.txt
    mv acl1.html acl$rnmMt.html
    zip -5 acl$rnmMt.zip acl$rnmMt.txt acl$rnmMt.html ./daily/*.*
    rm acl$rnmMt.txt ./daily/*.*
    cp access_log$2 acl1.txt
}
logs () {
    wget -P “/home/user/logs” “ftp://id:pass@domain/logdirs/access_log$2”
    drv 2 $2
    Dt=`date ‘+%d’`
    case “$Dt” in
        #今日は2日です
        02 ) ext 0 $2 ;;
        #今日は2日ではありません
        * ) echo “通常処理” ;;
    esac
    drv 1 $2
    visitors -A -m 250 access_log$2 >./daily/$ymd.html
    rm “access_log$2”
    case “$1” in
        0 ) echo “完了” ;;
        * ) epiphany ./daily/$ymd.html acl1.html acl2.html ;;
    esac
}
cd ‘/home/user/logs’
case “$2” in
    [1-6] ) dag=$2
    bkdate=_$2
    ;;
    * ) dag=0 ;;
esac
ymd=`date -d “$dag days ago” ‘+%Y%m%d’`
case “$1” in
    0 ) logs 1 $bkdate ;;
    1 ) epiphany ./daily/$ymd.html acl1.html acl2.html ;;
    * ) logs 0 ;;
esac

コメントは受け付けていません。