Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8241[/thread]

Hilfe Log datei analysieren in Perl: Hilfe Log datei analysieren in Perl



<< >> 8 Einträge, 1 Seite
Gast Gast
 2006-08-16 13:02
#68952 #68952
Ich habe ein Problem. Ich muss eine Log Datei durchsuchen, die Informationnen über Logical routers,virtual adresse und
andere Daten enthält.

Diese Datei ist dynamisch von dem Server generiert.

Ich wollte mit Binäre Bäume arbeiten aber ich komme immer nicht zu Recht.

Die Datei fängt mit veschiedenen Informationen an, die für uns nicht wichtig sind. Nur interressiert uns ab diese Stelle:



...
...
...
(1)logical-routers {
m10_0_as1 {
interfaces {
ge-0/1/0 {
unit 50 {
vlan-id 50;
family inet {
address 218.1.xx.xxx/xx {
vrrp-group 50 {
virtual-address 218.x.95.xxx;
priority 200;
preempt;
accept-data;
}
}
}
}
unit 51 {
vlan-id 51;
family inet {
address 172.xx.xx.82/xx {
vrrp-group 51 {
virtual-address 172.16.xx.xx1;
priority 200;
preempt;
accept-data;
}
}
}
}

(2) ge-1/1/0 {
unit 11 {
vlan-id 11;
family inet {
address 1xx.xx.xxx.6/xx;
}
}
}
}


(3) m10_0_vr1 {
interfaces {
ge-1/0/0 {
unit 201 {
vlan-id 201;
family inet {
filter {
output fil-1/0/0.201;
}
address 1x2.xx.88.2/aa {
vrrp-group 201 {
virtual-address 1xx.1x.xx.1;
priority 200;
preempt;
}
}
}
}
unit 240 {
vlan-id 240;
family inet {
address xx8.1.x7.xx/xx {
vrrp-group 240 {
virtual-address 218.x.7x.xx;
preempt;
accept-data;
}
}
}
}


(1) hier muss die Routername rausholen(m10_0_as1), dann seine Interface(ge-0/1/0), und die "Unit" die zu dieser Interface gehören
(from unit 50 bis.....185 zum Beispiel ich habe nicht alle geschrieben). Unter jede Unit muss auch sein Vlan-Id und address rausgenommen werden
(zum Beispiel hier für (1) m10_0_as1, ge-0/1/0, unit 50,vlan-id 50, address 218.1.xx.xxx unit 51,vlan-id 51,address 172.xx.xx.82)

(2) dann muss auch (2) durchgesucht werden (hier ist ge-1/1/0 ist auch eine Interface aber ohne Schlüssenwort Interface mit seinen eigenen Unit,Vlan-id,address ))

Dann (3)...



NB : Logical-routers fängen immer mit "m10_0_" und interface mit "ge-" oder "fe-" ....

ich habe selbst die Marken (1),(2)(3) um zu klären geschrieben.



So wie kann ich die Sachen lösen?

Bitte helfen sie mir
Grüß
lepetitjoe
Ronnie
 2006-08-16 15:47
#68953 #68953
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Aus meiner Sicht ist es mit regulären Ausdrücken kaum zu machen, die einfache Variante fällt also weg. Wenn du nicht beim copy&paste was "unterschlagen" hast, fallen auch andere Möglichkeiten weg, da die Anzahl öffnender und schließender Klammern nicht übereinstimmt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl

use strict;
use warnings;

my ($o, $c) = 0, 0;

while(<>) {
/\{/ and $o++;
/\}/ and $c++;
}

print 'opening curled brackets: ' . $o . "\n";
print 'closing curled brackets: ' . $c . "\n";
renee
 2006-08-16 16:50
#68954 #68954
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich hatte auch erst an CPAN:Text::Balanced gedacht, aber erste Versuche gingen schief...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Crian
 2006-08-16 16:59
#68955 #68955
User since
2003-08-04
5866 Artikel
ModeratorIn
[Homepage]
user image
Ich vermue mal ganz stark, dass in der Originaldatei die Klammern paarig vorhanden sind und nur durch das Kopieren nicht alle mit übertragen wurden.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
renee
 2006-08-16 18:46
#68956 #68956
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Kannst Du die Datei so zusammenkürzen, dass alles wichtige drin ist und das Format nicht verstümmelt wird?

P.S.: Ich werde nachher diesen Thread mit dem alten verschmelzen. Also nicht wundern, wenn nachher dieser Thread "verschwunden" ist.

P.P.S: Das es hier Probleme mit der Anmeldung gibt, ist bekannt und wird sich hoffentlich bald erledigen (mit der neuen Forumssoftware). @Admins: diesen User bitte manuell freischalten.\n\n

<!--EDIT|renee|1155739715-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2006-08-16 18:02
#68957 #68957
ich kann mich nicht anmelden und auch nicht registrieren lassen. Etwas funktionniert nicht auf diese Seite.
Deswegen will ich als neues Thema auf meine Frage von heute morgen bewantworten:

Soll ich die Datei schicken? es ist ein bisschen groß (1600 Zeilen)..

Seit gestern versuche ich mich anzumelden ohne Erfolg.
meine Adresse vieilleicht für eine mögliche Anwort :

lepetitjoe@caramail.com
sid burn
 2006-08-17 17:54
#68958 #68958
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Diese Lösung ist noch nicht ganz fertig. Das was du noch machen musst ist die ausgelesenen Daten vernünftig in eine Struktur Speichern. Dafür habe ich jetzt keine Zeit gehabt. Das einzige was erforderlich ist, das eine ausgeglichene Anzahl öffnender/schließender Klammern existiert. ich denke aber mal in der Originaldatei wird das vorhanden sein. Ich musste hier noch ein paar schließende Klammern letztendlich hinzufügen.

Code: (dl )
Vorläufig entfernt: siehe unten.


Beim Ausführen kommt dann folgendes heraus:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
HASH: [logical-routers]
HASH: [m10_0_as1]
HASH: [Interfaces]
HASH: [ge-0/1/0]
HASH: [unit 50]
WERT: key: [vlan-id] value: [50]
HASH: [family inet]
HASH: [address 218.1.xx.xxx/xx]
HASH: [vrrp-group 50]
WERT: key: [virtual-address] value: [218.x.95.xxx]
WERT: key: [priority] value: [200]
WERT: key: [preempt]
WERT: key: [accept-data]
HASH: [unit 51]
WERT: key: [vlan-id] value: [51]
HASH: [family inet]
HASH: [address 172.xx.xx.82/xx]
HASH: [vrrp-group 51]
WERT: key: [virtual-address] value: [172.16.xx.xx1]
WERT: key: [priority] value: [200]
WERT: key: [preempt]
WERT: key: [accept-data]
HASH: [ge-1/1/0]
HASH: [unit 11]
WERT: key: [vlan-id] value: [11]
HASH: [family inet]
WERT: key: [address] value: [1xx.xx.xxx.6/xx]
HASH: [m10_0_vr1]
HASH: [interfaces]
HASH: [ge-1/0/0]
HASH: [unit 201]
WERT: key: [vlan-id] value: [201]
HASH: [family inet]
HASH: [filter]
WERT: key: [output] value: [fil-1/0/0.201]
HASH: [address 1x2.xx.88.2/aa]
HASH: [vrrp-group 201]
WERT: key: [virtual-address] value: [1xx.1x.xx.1]
WERT: key: [priority] value: [200]
WERT: key: [preempt]
HASH: [unit 240]
WERT: key: [vlan-id] value: [240]
HASH: [family inet]
HASH: [address xx8.1.x7.xx/xx]
HASH: [vrrp-group 240]
WERT: key: [virtual-address] value: [218.x.7x.xx]
WERT: key: [preempt]
WERT: key: [accept-data]
HASH: [ge-1/1/0]
HASH: [unit 11]
WERT: key: [vlan-id] value: [11]
HASH: [family inet]
WERT: key: [address] value: [1xx.xx.xxx.6/xx]


Es muss also noch gemacht werden das überall wo HASH steht sozusagen die Datendarstellung eine ebene Tiefer geht. Also HASH wäre immer ein Kandidat für einen Key. Und enthält dann als Value wieder ein Hash u.s.w.

Bisher weiß ich noch nicht genau wie ich das anstelle, aber das beispiel zeigt schnmal wie man an die Daten kommt, und darauf lässt sich schon aufbauend die Daten in eine Struktur speichern.

EDIT:
Naja __DATA__ ist hier so gut wie überhaupt nicht richtig Formatiert. Sollte aber eigentlich Formatiert sein. Da in den Regex Newlines benutzt werden muss diese aber stimmen. Habe jetzt keine Lust das neu zu Formatieren. Die Datei kannst du auch hier herunterladen.

http://sidburn.de/pub/verschachtelung.plx


EDIT2:
Hab den Quelltext hier rausgenommen, dass macht kein Sinn. Wenn ich $1 schreibe wird es angezeigt, wenn ich auf Preview drücke auch, sobald ich auf "submit" gehe steht da irgendetwas anderes. Gibt wohl Zeichensatz probleme.

Die Datei oben ist übrigens UTF-8 Codiert.\n\n

<!--EDIT|sid burn|1155824013-->
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2006-08-17 18:39
#68959 #68959
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@sid burn: Da empfiehlt es sich, keine Perl-Tags sondern Code-Tags zu verwenden...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 8 Einträge, 1 Seite



View all threads created 2006-08-16 13:02.