Автоматическая отправка логов apache за вчера на почту.

Иногда бывает необходимо, отправлять на почту логи веб сервера apache за вчерашний день. Для решения этой задачи, я написал совершенно элементарный скрипт на Perl

#! /usr/bin/perl

use strict;
use warnings;

my $apache_log = "/var/log/www/access_log";
my $user = "root";

my $rightnow=time();
$rightnow -= (24 * 60 * 60);

(my $Second, my $Minute, my $Hour, my $DayOfMonth, my $Month, my $Year, my $Weekday, my $DayOfYear, my $IsDST) = localtime($rightnow);
my $RealYear = $Year + 1900;
if ($DayOfMonth < 10) {$DayOfMonth = "0" . $DayOfMonth}
my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
my $apache_date = "$DayOfMonth/$abbr[$Month]/$RealYear";

my $command = "cat $apache_log|grep $apache_date";
print `$command | mail $user -s "access_log $apache_date"`;

В скрипте есть 2 вещи, которые стоит поправить — это значение переменных $apache_log и $user. Первая переменная содержит в себе путь к файлу логи из которого нужно выдирать и отправлять, а вторая — имя польователя (либо email) которому следует отправлять логи.

Очень удобно повесить выполнение этого скрипта в crontab, чтобы он запускался автоматически.

Tags: ,

Friday, April 18th, 2008 Uncategorized