Espero puedan apoyarme con esta duda, saludos a todos
Dentro de mi servidor tengo una serie de archivos de log que se generan x tiempo, lo que yo necesito hacer es tomar esos archivos, ofuscar un campo determinado de cada uno de estos archivos, y una vez que lo hace se debe crear por cada archivo analizado otro archivo de salida en donde se muestre el contenido del archivo pero con el campo ofuscado y todo lo demas igual.
He hecho un script como este: ---------------------------------------------------------- #!/usr/bin/env python # -*- coding: utf-8 -*- # # import re import os import glob def rot47(s): x = [] for i in xrange(len(s)): j = ord(s) if j >= 33 and j <= 126: x.append(chr(33 + ((j + 14) % 94))) else: x.append(s) return ''.join(x)
lineas2=0 list_of_files = glob.glob('/home/omar/pruebas_scripts/test_ofus/*.log') for file_name in list_of_files: #for test in origen.readlines(): origen = open(file_name, 'r') destino = open(file_name + ".txt", "w") for test in origen.readlines(): split=test.split("|") lineas=test.replace(split[4],rot47(split[4])) lineas2 = lineas + 1 destino.writelines(lineas) origen.close() destino.close() -----------------------------------------------------------
lo anterior lo realizo con rot47 para el ofuscado. El problema es que si el archivo origen tiene 4 lineas, en el archivo destino solo crea 1 y si hay mas archivos a generar se generan con 0 lineas, es decir, unicamente lee una linea del archivo en cuestion siendo q tiene más.
Esa sería mi consulta, espero puedan apoyarme y darme algunas sugerencias al respecto.
Yo unicamente quiero manipular(cifrar) el campo 5 cuyo contenido es 4986830.
Con awk ya pude imprimir ese campo con la instrucción awk 'BEGIN {FS="|"}; {print $5}' resp_260813.log.
Pero lo que quiero es que todo el archivo siga igual excepto ese campo, debido a que ese archivo se enviara por la red y ese campo no debe ser visible.
Espero puedan ayudarme a resolver este problema con el archivo mostrado, seguire trabajando en eso.