[pyar] Parser almacena cadenas en diccionario
Daniel Moisset
dmoisset en machinalis.com
Mie Nov 14 18:57:28 ART 2012
2012/11/14 Alberto Benítez <freestyle10 en gmail.com>
> Gracias por la solución, no consigo hacerla funcionar con todos los
> parámetros que quiero recoger
>
> Feb 20 23:27:11 ubuntu kernel: [1988916.899165] iptables: IN=eth0 OUT= MAC=00:00:00:00:00:00:00:
> 00:00:00:00:00:00:00 SRC=192.168.0.3 DST=192.168.0.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=30541
> DF PROTO=TCP SPT=60148 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
>
>
Para este caso, capaz con expresiones regulares vas bien:
>>> s = "Feb 20 23:27:11 ubuntu kernel: [1988916.899165] iptables: IN=eth0
OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=192.168.0.3
DST=192.168.0.1 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=30541 DF PROTO=TCP
SPT=60148 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0"
>>> import re
>>> r = re.compile("([A-Z]+)=([^ ]*)")
>>> r.findall(s)
[('IN', 'eth0'),
('OUT', ''),
('MAC', '00:00:00:00:00:00:00:00:00:00:00:00:00:00'),
('SRC', '192.168.0.3'),
('DST', '192.168.0.1'),
('LEN', '60'),
('TOS', '0x10'),
('PREC', '0x00'),
('TTL', '64'),
('ID', '30541'),
('PROTO', 'TCP'),
('SPT', '60148'),
('DPT', '22'),
('WINDOW', '5840'),
('RES', '0x00'),
('URGP', '0')]
Ahi lo tenes como lista de pares. Por supuesto tambien podes
>>> dict(r.findall(s))
{'DPT': '22',
'DST': '192.168.0.1',
'ID': '30541',
'IN': 'eth0',
'LEN': '60',
'MAC': '00:00:00:00:00:00:00:00:00:00:00:00:00:00',
'OUT': '',
'PREC': '0x00',
'PROTO': 'TCP',
'RES': '0x00',
'SPT': '60148',
'SRC': '192.168.0.3',
'TOS': '0x10',
'TTL': '64',
'URGP': '0',
'WINDOW': '5840'}
Saludos,
D.
> Quizás sera mejor que me programa algún modulo a mano, se les ocurre algo?
>
> Saludos
>
>
>
>
> El 9 de noviembre de 2012 14:26, Ezequiel Garcia <elezegarcia en gmail.com>escribió:
>
> 2012/11/9 Alberto Benítez <freestyle10 en gmail.com>:
>> > Buenas,
>> >
>> > Estoy tratando de parsear lineas del log de ip tables, pongo un ejemplo
>> >
>> > Feb 20 23:27:11 ubuntu kernel: [1988916.899165] iptables: IN=eth0 OUT=
>> > MAC=00:00:00:00:00:00:00:
>> > 00:00:00:00:00:00:00 SRC=192.168.0.3 DST=192.168.0.1 LEN=60 TOS=0x10
>> > PREC=0x00 TTL=64 ID=30541
>> > DF PROTO=TCP SPT=60148 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
>> >
>> >
>> > Es posible parsear esta linea de manera que el diccionario quede por
>> ejemplo
>> >
>> > IN -> eth0
>> >
>> > MAC -> 00:00:00:00:00:00:00:00:00:00:00:00:00:00
>> >
>> >
>> > He leído algo sobre expresiones regulares pero de entrada parece
>> bastante
>> > complejo.
>> >
>>
>> Como dice el dicho:
>>
>> Some people, when confronted with a problem, think:
>> "I know, I'll use regular expressions."
>> Now they have two problems.
>>
>> :-)
>>
>> Ezequiel
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20121114/4a1dae74/attachment.html>
More information about the pyar
mailing list