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).