Necesito ejecutar este comando linux desde python y asignar el resultado a una variable.Ejecutando un comando linux desde python
ps -ef | grep rtptransmit | grep -v grep
He intentado utilizar la biblioteca de comandos de pitones para hacerlo.
import commands
a = commands.getoutput('ps -ef | grep rtptransmit | grep -v grep')
Pero a consigue el final del corte. La salida que recibo es:
'nvr 20714 20711 0 10:39 ? 00:00:00 /opt/americandynamics/venvr/bin/rtptransmit setup_req db=media camera=6 stream=video substream=1 client_a'
pero el resultado esperado es:
nvr 20714 20711 0 10:39 ? 00:00:00 /opt/americandynamics/venvr/bin/rtptransmit setup_req db=media camera=6 stream=video substream=1 client_address=192.168.200.179 client_rtp_port=6970 override_lockout=1 clienttype=1
¿Alguien sabe cómo detener la salida queden cortadas o cualquiera puede sugerir otro método?
-1 para el uso inútil de 'grep' y' shell = True'. – lunaryorn
El 'shell' es necesario si desea utilizar pipe en el comando. Acerca del 'grep', en realidad solo copié y pegué el comando de la pregunta. Ese segundo 'grep' sospecho que está ahí porque a veces el comando' grep' que ejecutamos también parece ser grep-ed y, por lo tanto, debe eliminarse. Esto en realidad se puede evitar usando 'grep [r] tptransmit' – fajran
Sé que' shell = True' es necesario para usar un conducto en el comando, y que el segundo 'grep' es para eliminar el primer comando' grep' del lista de procesos filtrados Pero ambos, el tubo y 'grep' son superfluos en este caso. – lunaryorn