SoloCodigo
		Programación Web y Scripting => Python => Mensaje iniciado por: fpython en Domingo 31 de Marzo de 2013, 22:07
		
			
			- 
				Hola estoy empezando con pythone y estoy intentando ejecutar un proceso subprocess.popen para que se ejecute de forma continua y poder leer por líneas la salida, algo así como si hiciera desde que arranca el ordenador un tail -f /var/log/syslog y pueda leer todas las líneas que se generan en este fichero hasta que se apague el ordenador. Sería algo así como un proceso que está siempre a la escucha y procesa líneas que el propio sistema vaya generando.
 
 A ver si alguien puede ayudarme.
 
 Saludos y gracias.
- 
				si lo que quieres es leer la respuesta puede utilizar un bucle for para verla dentro de un while para poder seguir repitiendo comandos y decirle que cree un tubo entre la entra y la salida del proceso con stdin y stdout, y comunicarlo con comunicate:
 
 while True:
 cmd = raw_input(">>>")
 if cmd == "exit":
 break
 else:
 for i in range(3):
 p = subprocess.Popen('%s' %(cmd[cont]), shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE)
 p.wait()
 n = p.communicate()
 print n[0]
- 
				Buenas :nosweat:, voy a proponer mi código y lo explico brevemente ya que no tiene gran complejidad.
 Lo he creado en una instancia donde sea necesario leer continuamente un fichero de huellas (*.log).
 
 #!/usr/bin/python
 from sys import exit #Importamos la función de salida de sys.
 import subprocess #Importamos la libreria de subprocess
 filename = "/var/log/checkServer.log" #Asignamos la ruta y fichero que leeremos.
 command = "tail -f %s" % (filename) #Asignamos el comando y el fichero anteriormente asignado.
 ps = subprocess.Popen(command,shell=True) #Creamos el subproceso.
 if(ps): #Comprobamos que existe.
 try: ps.wait() #Intentamos que se quede esperando hasta que interrumpa el programa o termine el mismo.
 except: exit(1)
 else: exit(0)
 
 Los valores 1 y 0 de la función exit, se refiere a si se termino sin errores el programa (la lectura).