Need assistance to generate a real time data plot

233 views Asked by At

In Python, I'm using paramiko to ssh a remote device. Now, I would like to have a real time data plot (time vs throughput) from the resultant output which is basically throughput measurement between two modules. Is there anyone can assist me how to do that? Thanks in advance. The code and resultant output I'm sharing here for your better understanding.

import sys
import time
import select
import paramiko

host = '169.254.115.1'
i = 1

#
# Try to connect to the host.
# Retry a few times if it fails.
#
while True:
    print ('Trying to connect to %s (%i/3)' % (host, i))

    try:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(host, port=22, username='user', password='user')
        print ("Connected to %s" % host)
        break
    except paramiko.AuthenticationException:
        print ("Authentication failed when connecting to %s") % host
        sys.exit(1)
    except:
        print ("Could not SSH to %s, waiting for it to start" % host)
        i += 1
        time.sleep(2)

    # If we could not connect within time limit
    if i == 3:
        print ("Could not connect to %s. Giving up") % host
        sys.exit(1)

# Send the command (non-blocking)
stdin, stdout, stderr = ssh.exec_command("cd /opt/cohda/test; sudo ./runtest_iperf_tx.sh")

# Wait for the command to terminate
while not stdout.channel.exit_status_ready():
    # Only print data if there is data to read in the channel
    if stdout.channel.recv_ready():
        rl, wl, xl = select.select([stdout.channel], [], [], 0.0)
        if len(rl) > 0:
            # Print data from stdout
            print (stdout.channel.recv(1024)),
#
# Disconnect from the host
#
print ("Command done, closing SSH connection")
ssh.close()

Throughput or resultant output

1

There are 1 answers

0
Alex G Rice On

If I were tasked with this problem, I would consider using Bokeh because it allows you to code in Python, and can stream data updates to the visualization: http://docs.bokeh.org

However there are surely many ways to do it, and many alternatives!