The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Анализ логов Apache"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Анализ логов Apache"  +/
Сообщение от lv2 email(ok) on 08-Май-12, 01:42 
Народ, помогите плиз?
Нужно написать скрипт на перл а у меня с ним опыта вобще никакого.
Задача:
Есть 4 папки в папке /weblogs
в каждой из них лежит немерянное количество архивированных логов апача.
Теперь есть файлик с 80тью IP адресами, и надо получить отчет какой адрес в каком файле встречается.
Человек который поставил задачу посоветовал применить перл хэши.
Вот сижу теперь ломаю голову что это такое и с чем его едят :(

Заранее благодарен за помощь.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Если не знаешь языка - вряд ли поможет, НО"  +/
Сообщение от wolkwww email on 10-Май-12, 11:16 
<pre>
#!/usr/bin/perl

use File::Find;

$addr_file = 'addr.txt';
my %h;
open(F, "< $addr_file");
map{ chomp; $h{$_}={}; } <F>;


$cpath = `pwd`;
chomp $cpath;

find(\&wanted, "./");

map{
    my $h = $h{$_};
    my $addr = $_;
    map{
    print "$a\t$_\n";
    }    sort {$a cmp $b} keys %$h;

} sort{ $a cmp $b} keys %h;


sub wanted{
    if (-f $_){
        my $n = $File::Find::name;
        if ($n =~ s/^\.//){
        $n = $cpath.$n;
        }
    open(F, "< $_");
    local $/=undef;
    my $s = <F>;
    map{
            if (index($s, $_) >=0 ){
                ${$_}{$n}++;
            }
    } keys %h;
    }
}

<pre>

Это будет работать в родительском каталоге и просматривать все файлы в этом каталоге(с поиском).
Если файло сжатые, то надо разжимать (можно на лету) но для начала надо изучить основные понятия языка.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Обчибочка"  +/
Сообщение от wolkwww email on 10-Май-12, 11:20 
Вместо:
    map{
    print "$a\t$_\n";
    }    sort {$a cmp $b} keys %$h;
Надо:
    map{
    print "$addr\t$_\n";
    }    sort {$a cmp $b} keys %$h;


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру