Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дублирование элементов массива, лог-файлы apache 
:(
    Опции темы
DiverD
Дата 19.1.2006, 03:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 14.9.2005
Где: Белорусь

Репутация: 1
Всего: 2



Вот код
Код

#!/usr/bin/perl
use strict;
use warnings;
our $httpd_a = '/var/log/httpd-access.log';
our $time = 2; 
our $logdir = '/tmp/log';
# access.log
sub httpd_acc {
our $drazm = (stat($httpd_a))[7];

open(HTTPD_ACC,"<$httpd_a");
my @list_acc = <HTTPD_ACC>;
#while (<HTTPD_ACC>) {
#push @list_acc, $_ if /netstat.|ps.aux|sockstat|id|who|ls./;
#}
close(HTTPD_ACC);

while(sleep($time))
{
my $mrazm = (stat($httpd_a))[7];
if ($mrazm > $drazm) {
open(NEW_LOG,"<$httpd_a");
my @new_acc = ();
while (<NEW_LOG>) {
push @new_acc, $_ if /netstat/g;
}
close(NEW_LOG);
my (%seen,@aonly,$item);
@seen{@list_acc} = ();
foreach $item (@new_acc) {
push (@aonly,$item) unless exists $seen{$item};
}
$drazm = $mrazm;

open(NLOG,">>$logdir/access.log");
print NLOG join "\n","@aonly";
close(NLOG);
}
}
}
httpd_acc();


#Вот результат выполнения:
access.log:

127.0.0.1 - - [19/Jan/2006:02:47:10 +0200] "GET /shel.php?cmd=netstat HTTP/1.1" 200 3799 "http://127.0.0.1/shel.php?cmd=ps+ax" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:10 +0200] "GET /shel.php?cmd=netstat HTTP/1.1" 200 3799 "http://127.0.0.1/shel.php?cmd=ps+ax" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:12 +0200] "GET /shel.php?cmd=id HTTP/1.1" 200 248 "http://127.0.0.1/shel.php?cmd=netstat" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:10 +0200] "GET /shel.php?cmd=netstat HTTP/1.1" 200 3799 "http://127.0.0.1/shel.php?cmd=ps+ax" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:12 +0200] "GET /shel.php?cmd=id HTTP/1.1" 200 248 "http://127.0.0.1/shel.php?cmd=netstat" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:10 +0200] "GET /shel.php?cmd=netstat HTTP/1.1" 200 3799 "http://127.0.0.1/shel.php?cmd=ps+ax" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:12 +0200] "GET /shel.php?cmd=id HTTP/1.1" 200 248 "http://127.0.0.1/shel.php?cmd=netstat" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"

#Вот результат логов apache httpd-access.log:

127.0.0.1 - - [19/Jan/2006:02:47:06 +0200] "GET /shel.php?cmd=ps+ax HTTP/1.1" 200 4979 "http://127.0.0.1/shel.php?cmd=ps" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:10 +0200] "GET /shel.php?cmd=netstat HTTP/1.1" 200 3799 "http://127.0.0.1/shel.php?cmd=ps+ax" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:12 +0200] "GET /shel.php?cmd=id HTTP/1.1" 200 248 "http://127.0.0.1/shel.php?cmd=netstat" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:15 +0200] "GET /shel.php?cmd=who HTTP/1.1" 200 433 "http://127.0.0.1/shel.php?cmd=id" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
127.0.0.1 - - [19/Jan/2006:02:47:20 +0200] "GET /shel.php?cmd=man+man HTTP/1.1" 200 6402 "http://127.0.0.1/shel.php?cmd=who" "Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.7) Gecko/20050420"
[/code]

Как видно мой логфайл access.log дублирует в отличии от apache. где моя ошибка?
PS: скрипт по задумке должен записывать толька те строки и в оригинале в которых присуцтвует "netstat"

Это сообщение отредактировал(а) diverd - 19.1.2006, 03:58
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
saint
Дата 19.1.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 2.9.2005

Репутация: нет
Всего: нет



строка 25: push @new_acc, $_ if /netstat/g;

попробуй убрать "g" в конце регекспа:

Код

push @new_acc, $_ if /netstat/;


а вообще строку можно сократить до:

Код

push @new_acc if /netstat/;


smile

Это сообщение отредактировал(а) saint - 19.1.2006, 16:26
PM MAIL   Вверх
DiverD
Дата 19.1.2006, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 14.9.2005
Где: Белорусь

Репутация: 1
Всего: 2



пофигу с глобалам или без - серавно не работает
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
DiverD
Дата 19.1.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 14.9.2005
Где: Белорусь

Репутация: 1
Всего: 2



ВСЕ проблема решена.
ps: вас пока дождешьсяsmile
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
BlackLFL
Дата 20.1.2006, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 1
Всего: 12



так напишете, как решили проблему ...
PM WWW   Вверх
DiverD
Дата 20.1.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 225
Регистрация: 14.9.2005
Где: Белорусь

Репутация: 1
Всего: 2



BlackLFL
колупался 2 часа все думал думал но ни делалsmile там где идет дописывание проста поставить на запись вместо >> поставить > smile
Кстати если есть идеи прошу высказать..
--------------------
[ FreeBSD & pERL p0WER eVERY dAY ]
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.