[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