[ Foro de Python ]
Estimados ,
junto con saludarlos y desearles un buen día tengo una duda en la cual llevo días buscando y aun no encuentro una solución, estoy creando un script de utilidad en mi trabajo el cual esta en bash.. pero ya que python es lo mejor para manejar scripts estoy usando python para esto. La idea es simple.. les dejare el código para que puedan revisar
import subprocess
from subprocess import PIPE, Popen
ps = "ps"
argumento_ps = "-Af"
proceso = "tomcat7"
lista_procesos = subprocess.Popen([ps,argumento_ps], stdout=PIPE)
print(lista_procesos.communicate())
if proceso in lista_procesos:
print "proceso no esta corriendo"
es algo siempre.. el print(lista_procesos.communicate()) lo pongo ahí para ver si el comando sirve.. lo que necesito es comprobar si el proceso tomcat7 se encuentra en la lista obtenida del comando ps -Af, estoy leyendo un libro sobre python para administradores de Unix y Linux, trate de obtener el output del comando con subprocess.call() pero eso aunque no quiera mostrar el comando en la shell lo muestra de todas formas.. leyendo encontré la función Popen, la cual me guarda el output.. pero cuando quiero hacer la comprobación con IF me dice que el objeto no es Iterable.. Mi preguta es si existe otra funcion que ejecute el comando y no lo muestre por pantalla, pero que guarde el resultado en una variable y se pueda comprobar con IF ??
Atte
Esteban López
Una forma conceptualmente más sencilla (para mí) sería mandar a fichero el resultado de la orden "ps", y luego revisar las líneas de ese fichero, para ver si alguna de ellas contiene el texto "tomcat".
El fichero lo abres con algo como
procesos = open("procesos.dat", "r")
Y lees todas sus líneas con algo como
lineas = procesos.readlines()
(y cierras el fichero).
Ese "lineas" sí será iterable.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)