[Python-es] Duda un poco básica ¿RTFM? ;-)
Amaya
amaya en debian.org
Jue Ago 22 12:50:47 CEST 2002
Muy buenas a todos/as.
En el trabajo acaban de declarar a Python acomo lenguage oficial de scripting
del departamento de sistemas, lo cual me llena de gozo por un lado, porque me
gusta mucho, y me aterra un poco por otro, porque no ando muy suelta.
Estoy considerando adquirir "Learning Python", porque no soy la única por aquí
que programa de oído ;-) [Metáfora musical]. ¿Alguno tiene una sugerencia mejor?
Bueno, al grano..
Estoy parseando unos logs de iptables. Mi programa (de momento) es este:
#!/usr/bin/python
import re, string
file = open('amaya', 'r')
line_num = 0
i,j = 0, i+ 1
my_file = []
for line in file.readlines():
line_num = line_num + 1
row_elem = string.split(line)
date1 = row_elem[0] + " " + row_elem[1]
date2 = row_elem[2]
match_pat = re.compile(r'(SRC=[0-9.]+)[\t ](DST=[0-9.]+)[\t ](.*TCP|UDP)[\t ](SPT=[0-9]+)[\t ](DPT=[0-9]+)[\t ](SEQ=[0-9]+)[\t ](ACK=[0-9]+)')
pattern = match_pat.search(line)
src_addr = pattern.group(1)
dst_addr = pattern.group(2)
src_port = pattern.group(4)
dst_port = pattern.group(5)
sequence = pattern.group(6)
ack_seq = pattern.group(7)
param = [line_num, date1, date2, src_addr, dst_addr, src_port, dst_port, sequence, ack_seq]
my_file.insert (line_num, param)
file.close()
while i < line_num:
while j < len(param):
print my_file[i]
El error es este:
[arodrigo en cuelebre iptables]$ python amaya.py
Traceback (most recent call last):
File "amaya.py", line 28, in ?
print my_file[line_num ]
IndexError: list index out of range
Yo lo único que quiero es tener una tabla de este estilo:
-------------------------------------
| line_num = 1 | dato1 | dato2 | ... |
-------------------------------------
| line_num = 2 | dato1 | dato2 | ... |
-------------------------------------
| ... | dato1 | dato2 | ... |
-------------------------------------
| line_num = n | dato1 | dato2 | ... |
-------------------------------------
y poder recorrerla con algo así como hacía en C o PHP: my_file[0,1] pero no doy
con cómo hacerlo.
No sé si se me entiende. :-(
Gracias y un saludo!
Amaya
--
Revolutions don't require corporate support
Más información sobre la lista de distribución Python-es