Tema: subprocess
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 14/09/2012, 11:49
emanuelabsch
 
Fecha de Ingreso: septiembre-2012
Mensajes: 3
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: subprocess

El codigo es el siguiente,lo que no logro es imprimir la salida de la consola:


Código Python:
Ver original
  1. from threading import Timer
  2. from subprocess import Popen, PIPE, STDOUT
  3.  
  4. def kill_proc():
  5.     proc.kill()
  6.  
  7. proc = Popen("iperf -u -s -p 5003", shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
  8.  
  9. t = Timer(30, kill_proc)
  10. t.start()
  11. proc.wait()
  12. print stdout
  13. print stdin
  14. print stderr
  15. output1 = proc.stdout.read()
  16. print output1

El error es el siguiente:

Traceback (most recent call last):
File "rtt5.py", line 12, in <module>
print stdout
NameError: name 'stdout' is not defined


el mismo error para stderr..


Usando envoy como dice razpitia.. para un ping normal logro capturar la salida pero a la hora de ejecutar el siguiente codigo:
Código Python:
Ver original
  1. # -*- coding: utf-8 -*-
  2.  
  3. """
  4. envoy.core
  5. ~~~~~~~~~~
  6.  
  7. This module provides envoy awesomeness.
  8. """
  9.  
  10. import os
  11. import sys
  12. import shlex
  13. import signal
  14. import subprocess
  15. import threading
  16.  
  17. import envoy
  18. r=envoy.run('iperf -u -s -p 5003')
  19. r.status_code
  20. r.history
  21. print r.std_out

Me da el siguiente error:


^CTraceback (most recent call last):
File "ppp.py", line 18, in <module>
r=envoy.run('iperf -u -s -p 5003')
File "/home/pepito/Escritorio/envoy.py", line 209, in run
out, err = cmd.run(data, timeout, kill_timeout, env, cwd)
File "/home/pepito/Escritorio/envoy.py", line 87, in run
thread.join(timeout)
File "/usr/lib/python2.7/threading.py", line 664, in join
self.__block.wait()
File "/usr/lib/python2.7/threading.py", line 244, in wait
waiter.acquire()
KeyboardInterrupt


Última edición por emanuelabsch; 14/09/2012 a las 12:17