Главная > Программирование, Работа > Скрипт геренации статистики squid

Скрипт геренации статистики squid

Заказчик заказал чтоб логи каждый день создавалась по следующими свойству, каждые 24 часов за прошлый день и ложись в пути ${dst}/2010/01/14 и в каждого первого числа создавалась за месяц по адресу ${dst}/2010/01/month. Было принято решение написать не большой sh скрипт и поместить его в cron

#!/bin/sh
#########################################################################################
#   Created:        Zakharchenko Andrey Ruslanovich
#   Date:           2010.01.16
#   Description:    Скрипт генерации статистики squid по средствам sarg
#########################################################################################

#--- основные переменные
dst='/usr/local/www/data/stat'
sarg='/usr/local/bin/sarg'
create_dir='/bin/mkdir -p'
ddate='/bin/date'
check=0

#--- переменные для дат
current_month_number=`${ddate} "+%m"`
last_month_number=${current_month_number}

current_year_number=`${ddate} "+%y"`
last_year_number=${current_year_number}

current_day_number=`${ddate} "+%d"`
last_day_number=${current_day_number}

#--- составляем основотую команду
command="${ddate} -v${current_day_number}d -v${last_month_number}m -v${last_year_number}y -v-1d "

#--- если сегодня 2010.01.01
if ([ `${ddate} +%m`  -eq 1 ] && [ `${ddate} +%d` -eq 1 ])
then
    ${create_dir} ${dst}/`$command +%Y`/`$command +%m`/"month"
    ${sarg} -d 01/`$command +%m`/`$command +%Y`-`$command +%d`/`$command +%m`/`$command +%Y` -o ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
    ${create_dir} ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
    ${sarg} -d `$command +%d`/`$command +%m`/`$command +%Y`-`$command +%d`/`$command +%m`/`$command +%Y` -o ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
    check=1
#--- если сегодня первое число любого месяца кроме января
elif ([ `${ddate} +%d`  -eq 1 ] && [ ${check} -ne 1 ] && [ `${ddate} +%m` -ne 1 ])
then
    ${create_dir} ${dst}/`$command +%Y`/`$command +%m`/month
    ${sarg} -d 01/`$command +%m`/`$command +%Y`-`$command +%d`/`$command +%m`/`$command +%Y` -o ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
    ${create_dir} ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
    ${sarg} -d `$command +%d`/`$command +%m`/`$command +%Y`-`$command +%d`/`$command +%m`/`$command +%Y` -o ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
#--- любое число кроме 1
elif [ `${ddate} +%d` -ne 1 ]
    then
    ${create_dir} ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
    ${sarg} -d `${ddate} -v-1d +%d/%m/%Y`-`${ddate} -v-1d +%d/%m/%Y` -o ${dst}/`${command} +%Y`/`${command} +%m`/`${command} +%d`
fi
  1. 17 Январь 2010 в 14:45 | #1

    А что такого особенного в январе что для него нужен отдельный блок такого же (за исключением кавычек у «month» в create_dir) кода?
    Строки для создания ежедневных отчетов наверное лучше вынести из If – они выполняются в любом случае.

  2. abigor
    17 Январь 2010 в 17:49 | #2

    Согласен. Чего-то я перемудрил.

  3. abigor
    19 Январь 2010 в 10:07 | #3

    Свел к такому скрипту после того как мозг отпустило:

    #!/bin/sh
    #########################################################################################
    #   Created:        Zakharchenko Andrey Ruslanovich
    #   Date:           2010.01.16
    #   Description:    Скрипт генерации статистики squid по средствам sarg
    #########################################################################################

    #--- основные переменные
    dst='/usr/local/www/data/stat'
    sarg='/usr/local/bin/sarg'
    create_dir='/bin/mkdir -p'
    ddate='/bin/date'

    #--- переменные для дат
    current_month_number=`${ddate} "+%m"`
    last_month_number=${current_month_number}

    current_year_number=`${ddate} "+%y"`
    last_year_number=${current_year_number}

    current_day_number=`${ddate} "+%d"`
    last_day_number=${current_day_number}

    #--- составляем основотую команду
    command="${ddate} -v${current_day_number}d -v${last_month_number}m -v${last_year_number}y -v-1d "

    #--- если сегодня первое число, создаем статистику за месяц
    if [ `${ddate} +%d` -eq 1 ]
    then
        ${create_dir} ${dst}/`$command +%Y`/`$command +%m`/month
        ${sarg} -d 01/`$command +%m`/`$command +%Y`-`$command +%d`/`$command +%m`/`$command +%Y` -o ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
    fi

    #--- ежедневная статистика
    ${create_dir} ${dst}/`$command +%Y`/`$command +%m`/`$command +%d`
    ${sarg} -d `${ddate} -v-1d +%d/%m/%Y`-`${ddate} -v-1d +%d/%m/%Y` -o ${dst}/`${command} +%Y`/`${command} +%m`/`${command} +%d`
  1. Пока что нет уведомлений.
Необходимо войти на сайт, чтобы написать комментарий.