#!/usr/bin/env perl ########################################################################### # # stat-initial # # Author: Richard Jones # Created On: 25/02/2005 # # Copyright (c) 2002, Hewlett-Packard Company and Massachusetts # Institute of Technology. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # - Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # - Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # # - Neither the name of the Hewlett-Packard Company nor the name of the # Massachusetts Institute of Technology nor the names of their # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS # OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR # TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE # USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH # DAMAGE. ########################################################################### ########################################################################### # This script starts from the year and month specified below and works # forward until the end of the current month, generating monthly aggregation # files for the DStat system. # # To customise for your own use change the $out_prefix, $out_suffix, # $start_year, $start_month, $dsrun and $out_directory variables below. # # If you wish to futher configure this script, you will need to edit the # command being executed, which appears near the bottom of the page, and is # commented with "# The command to generate the report" # # For more information on using the LogAnalyser, use: # # [dspace]/bin/dsrun org.dspace.app.statistics.LogAnalyser -help ########################################################################### use POSIX qw(floor); my $start; my $end; my $out; my $i; my $no_months; my $second; my $minute; my $hour; my $day; my $month; my $year; my $week_day; my $day_of_year; my $is_dst; my $out_prefix; my $out_suffix; # Details used ################################################ $out_prefix = "dspace-log-monthly-"; $out_suffix = ".dat"; $start_year = "2005"; $start_month = "1"; $dsrun = "/dspace/bin/dsrun"; $out_directory = "/dspace/log/"; ################################################ # Get the all the values for current time ($second, $minute, $hour, $day, $month, $year, $week_day, $day_of_year, $is_dst) = localtime(time); # set up the variables to use in the loop # number of years after the current year (will mostly be negative) # = ( + 1900) # = - $year_offset = $start_year - ($year + 1900); # total number of months between now and the start date (negated to be positive in general) # = || * 12 # = ( + 1) - # = + # we use -1 to make positive since it should always be negative $no_months = (-1 * ($year_offset * 12)) + (($month + 1) - $start_month); # start day of every month $start_day = "01"; # for every month ... for ($i = 0; $i < $no_months; $i++) { # the month of the year (horrid modular maths) $this_month = (($start_month + $i - 1) % 12) + 1; # number of years gone through since we started the loop $year_count = floor(($i + $start_month - 1) / 12); # the year of the current analysis period $this_year = $year + $year_offset + $year_count + 1900; # set the end day for the processing if ($this_month == 1 || $this_month == 3 || $this_month == 5 || $this_month == 7 || $this_month == 8 || $this_month == 10 || $this_month == 12) { $end_day = "31"; } elsif ($this_month == 4 || $this_month == 6 || $this_month == 9 || $this_month == 11) { $end_day = "30"; } else { if (($year % 4) != 0) { $end_day = "28"; } else { $end_day = "29"; } } # generate the date string $start = $this_year . "-" . $this_month . "-" . $start_day; $end = $this_year . "-" . $this_month . "-" . $end_day; $out = $out_directory . $out_prefix . $this_year . "-" . $this_month . $out_suffix; # The command to generate the report $execute = "$dsrun org.dspace.app.statistics.LogAnalyser -start $start -end $end -out $out"; system($execute); } exit(1);