Ich habe folgende Herausforderung:
Ich habe ein SYSLOG file uns muss diese via Python27 auslesen und auswerten.
Ich habe leider noch keine vorkentnisse in Py und habe mal folgendes Probiert:
1: Hier das SYSLOG:
Code: Alles auswählen
......
blabla
[RIP] 2014/04/28 16:38:40,921
IP-RIP Rx : Response SrcIp: 172.16.XX.128.
Vers.: RIP-2 Routg.Dom.: 0000
xyz blabla
[RIP] 2014/04/28 16:38:41,921
IP-RIP Rx : Response SrcIp: 172.16.XX.128.
Vers.: RIP-2 Routg.Dom.: 0000
xyz blabla
[RIP] 2014/04/28 16:38:41,924
IP-RIP Rx : Response SrcIp: 172.16.XX.128.
Vers.: RIP-2 Routg.Dom.: 0000
xyz blabla
....
Code: Alles auswählen
import re
import datetime
filedata = ''
with open("C:\\X\\Syslog-X.txt", "r") as fobj:
filedata = fobj.read()
def trace_dissect(trace):
'''
take a trace text and split it into little blocks, one per message
'''
trace_elements = []
# trace_elements = trace.split('')
block = []
for line in trace.splitlines():
if '[RIP]' in line:
if len(block)>0:
if '[RIP]' in block[0]:
trace_elements.append(block)
block = [line]
else:
block.append(line)
if len(block):
trace_elements.append(block)
return trace_elements
## (a)hier neue Funktion?
def get_element_date(element):
# damit wird die datetime ausgegeben
d_str = element[0].split(" ", 1)[1]
d= datetime.datetime.strptime(d_str, "%Y/%m/%d %H:%M:%S,%f")
return d
## (b)hier neue Funktion?
tr_elements = trace_dissect(filedata)
oldblock = None
for block in tr_elements:
print get_element_date(block)
if oldblock is not None:
print get_element_date(block) - get_element_date(oldblock)
oldblock = block
## (c)hier neue Funktion?
hinzufügen muss.
Bei print block[0]
2014-04-28 16:38:40.921000
0:00:00.002000
Bei print block[1]
IP-RIP Rx : Response
Bei print block[2]
Vers.: RIP-2 Routg.Dom.: 0000
ich habe leider gerade ein brett vom kopf?!
durch die splittung bekomme ich doch:
['[RIP] 2014/04/28 16:38:30,104', 'IP-RIP Tx: Request',
'SrcIp: 172.16.100.1', 'DstIp: 224.0.0.9', 'Vers.: RIP-2 Routg.Dom.: 0000', '']
Ich muss in der ersten Funktion nach Datum sortieren, RIP entfernen, dann nach 'IP-RIP Tx: Request'
suchen und nur diese zeilen verwenden mit der bedienung, dass 'Vers.: RIP-2 Routg.Dom.: 0000' vorhanden ist
==> ich kommen gerade nicht weiter und freue mich auf eure Vorschläge.
Mit besten Gruß
W2kfs1