Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam
mam pytanie:
Chcę dokonać podmiany regexp(poniżej przykład) data w postaci Mon Jan 19 21:31:14
$line = ~ s/\w+\s\s?\w+\s\s?\d?\d \d\d:\d\d:\d\d \d\d\d\d/a/g;
wtedy dostaję taki błąd:
Use of uninitialized value $_ in substitution (s///) at example_klasowa_v3.pl line 172.
Uporałem się z tym w sposób:
$_ = $line; (pytanie czy to dozwolone jest).
następnie dokonując
print $line
nie widzę aby cokolwiek zostało wycięte.
Pytanie: co jest nie tak ?
Ogólnie rzecz ujmując jest to mi potrzebne do przetwarzania log- ów (min Apache), wyglądających tj. poniżej
[Tue Jan 15 13:26:00 2013] [notice] Apache/2.2.15 (Unix) DAV/2 mod_ssl/2.2.15 OpenSSL/1.0.0-fips mod_wsgi/3
postępuję następująco:
1. Wycięcie daty (przekonwertowanie do uniwersalnego zapisu)
2. Usunięcie przetworzonego ciągu z ciągu głownego(wtedy mamy krótszy ciąg) oraz przetwarzanie dalej (i tak w kółko)
Być może ktoś posiada doświadczenia bądz pomysły odnośnie podobnego skryptu.
Pozdrawiam i dzięki
Offline
To są logi tylko Apacha, czy głębszy problem, np logi różnych programów?
Bo zamiast się certolić regexami, przestań kopać z sandała w otwarte drzwi, zajrzyj najpierw do repozytoriów CPAN:
Np do Apacha:
http://search.cpan.org/~akira/Apache-ParseLog-1.02/ParseLog.pm
Do sysloga ogólnie:
http://search.cpan.org/~dschwei/Parse-Syslog-1.10/lib/Parse/Syslog.pm
http://search.cpan.org/~blhotsky/Parse-Syslog-Line- … yslog/Line.pm
Albo gotowe programy, logcheck i swatch, oba masz w repo.
A jak ci nie wyjdzie z modułem, to w splicie można ciąć po białych znakach albo po dwóch argumentach, np spacja albo tabulator.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2013-01-19 06:19:13)
Offline
Dzięki za pomoc (Zdaję sobie sprawę z dostępności gotowych bibliotek na rozne log-i).
Niechcę się tutaj uzależniać od bibliotek które ostatnią wersję miały w 2005 roku (może i błąd).
Przeraża mnie wizja dołączania do tak naprawde małego skryptu juz wiecej biblitek(na zadania relatywnie proste).
Porównywałem programik "awstats" i oni też tak przyjeli.
wybralem opcje (regexp - i jest ok).
Pytanie
Ma może ktoś wiedzę jak sprawdzić na jakim ip nasłuchuje dana usługa. Chodzi mi o to zeby wiedziec ze dzialajaca obecnie aplikacja np (apache nasluguje na takim interface / ip ) - muszę zrobić wpis do zdalnej bazdy danych z ip serwera (jednak trzeba go ustalić).
Cięcie w splicie ? tutaj raczej niewskazane...spacje mamy często tabulatoró nei mamy ...(poradziłęm sobie z tym także jest ok).
[Tue Jan 15 13:26:00 2013] [notice] Apache/2.2.15 (Unix) DAV/2 mod_ssl/2.2.15 OpenSSL/1.0.0-fips mod_wsgi/3
Pozdrawiam
Offline
W jakim w ogóle celu chcesz parsować logi Apacha?
Mało to rozmaitych awstatsów czy webailzerów?
Możesz też zapisywać logi Apacha przez mod_log_sql do bazy,
i selectem wyciągać, co potrzeba.
Sznurek:
http://www.howtoforge.com/apache2-logging-to-a-mysq … n-debian-etch
W dodatku moduły perla do logów, to nie są biblioteki, tylko paczki z zestawem regexów, działają zawsze, są napisane w perlu.
Tak samo, jak 90% modułów e Cpan.
To by było na tyle
;-)
Ostatnio edytowany przez Jacekalex (2013-01-20 17:05:54)
Offline
Strony: 1