Foros del Web » Programando para Internet » Python »

No puedo guardar la salida de una orden os.system() ?¿

Estas en el tema de No puedo guardar la salida de una orden os.system() ?¿ en el foro de Python en Foros del Web. Hola, Tengo un problema, quiero poder procesar la salida de mi programa, pero consigo que me escriba el resultado de la orden dig (programa para ...
  #1 (permalink)  
Antiguo 22/04/2009, 14:22
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
No puedo guardar la salida de una orden os.system() ?¿

Hola,

Tengo un problema, quiero poder procesar la salida de mi programa, pero consigo que me escriba el resultado de la orden dig (programa para resolver dns)

Este es el codigo del programa.
Lee un fichero con dominios

Código:
import sys, os
         
entrada=sys.argv[1]
file = open(entrada,'r')

for linea in file:
	linea = linea.split('\n')[0]
	print 'DOMINIO:'+linea

	orden="dig " +linea+ " mx +short"
	os.system(orden)
Y la salida que muestra es

DOMINIO:pepe.com
DOMINIO:google.com
10 smtp4.google.com.
10 smtp1.google.com.
10 smtp2.google.com.
10 smtp3.google.com.
DOMINIO:tashia.es
10 mx2.dondns.com.
0 mx.dondns.com.
DOMINIO:yahoo.com
1 e.mx.mail.yahoo.com.
1 f.mx.mail.yahoo.com.
1 g.mx.mail.yahoo.com.
1 a.mx.mail.yahoo.com.
1 b.mx.mail.yahoo.com.
1 c.mx.mail.yahoo.com.
1 d.mx.mail.yahoo.com.


Quiero que esta salida sea redirigida a un fichero. Lo he intentado llamando la programa de la siguiente manera

prog.py dominios.txt > fileMX.txt

Pero dentro del fichero solo me guarda los dominios
DOMINIO:pepe.com
DOMINIO:google.com
DOMINIO:tashia.es
DOMINIO:yahoo.com

La salida de os.system(orden) no me la copia al fichero. He probado poniendo un print delante de la orden, pero lo que consigo es que me printe 0 o 1 en función si se ejecutó bien la orden o no.

Alguien sabe como printar en un fichero la salida de una orden de sistema?

Muchas gracias
  #2 (permalink)  
Antiguo 26/04/2009, 06:16
 
Fecha de Ingreso: julio-2008
Mensajes: 15
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: No puedo guardar la salida de una orden os.system() ?¿

no tengo ni idea de dns ni nada de eso pero creo que podrias hacer algo como

orden="dig " +linea+ " mx +short"
resultado=os.system(orden)
print resultado

y intentar entonces enviar la informacion al archivo quiza ,no se si te soy de ayuda pues ya es algo un saludo
  #3 (permalink)  
Antiguo 28/04/2009, 18:56
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: No puedo guardar la salida de una orden os.system() ?¿

Amig@ tienes 3 maneras de hacerlo:
1.- Escribir pedir tambien el fichero de salida con argv[2] y escribir la informacion ahi.
2.- Escribir en el stdout, para que al momento de hacer la redireccion te imprima todo.
3.- En "orden" puedes hacer lo siguiente orden="dig " +linea+ " mx +short >> "+"fileMX.txt"

El >> añade la salida del comando al archivo, pero solo funciona en "linux"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:18.