El codigo es el siguiente,lo que no logro es imprimir la salida de la consola:
Código Python:
Ver originalfrom threading import Timer
from subprocess import Popen, PIPE, STDOUT
def kill_proc():
proc.kill()
proc = Popen("iperf -u -s -p 5003", shell=True,stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
t = Timer(30, kill_proc)
t.start()
proc.wait()
print stdout
print stdin
print stderr
output1 = proc.stdout.read()
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# -*- coding: utf-8 -*-
"""
envoy.core
~~~~~~~~~~
This module provides envoy awesomeness.
"""
import os
import sys
import shlex
import signal
import subprocess
import threading
import envoy
r=envoy.run('iperf -u -s -p 5003')
r.status_code
r.history
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