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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-01-15 13:37:50

  pazio - Nowy użytkownik

pazio
Nowy użytkownik
Zarejestrowany: 2013-01-15

perl - banalny problem (regexp podmiana)

Witam
mam pytanie:

Chcę dokonać podmiany regexp(poniżej przykład) data w postaci Mon Jan 19 21:31:14

Kod:

$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:

Kod:

Use of uninitialized value $_ in substitution (s///) at example_klasowa_v3.pl line 172.

Uporałem się z tym w sposób:

Kod:

$_ = $line; (pytanie czy to dozwolone jest).

następnie dokonując

Kod:

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

Kod:

[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

 

#2  2013-01-16 17:12:25

  jezoo - Dzięcioł

jezoo
Dzięcioł
Skąd: Z lasu
Zarejestrowany: 2005-09-02

Re: perl - banalny problem (regexp podmiana)

a nie mozesz zrobic splita po tabulatorze? w tedy zwroci Ci tablice 3 elementowa (data, rodzaj informacji, log)


LRU #480459

Offline

 

#3  2013-01-18 20:26:38

  pazio - Nowy użytkownik

pazio
Nowy użytkownik
Zarejestrowany: 2013-01-15

Re: perl - banalny problem (regexp podmiana)

jezoo napisał(-a):

a nie mozesz zrobic splita po tabulatorze? w tedy zwroci Ci tablice 3 elementowa (data, rodzaj informacji, log)

Wiem, było by bez problemu lecz jest tam spacja.

Offline

 

#4  2013-01-19 06:00:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: perl - banalny problem (regexp podmiana)

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2013-01-20 16:43:43

  pazio - Nowy użytkownik

pazio
Nowy użytkownik
Zarejestrowany: 2013-01-15

Re: perl - banalny problem (regexp podmiana)

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

 

#6  2013-01-20 17:01:25

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: perl - banalny problem (regexp podmiana)

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)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)