After executing a command by Python Paramiko how could I save result?

nightrider84 picture nightrider84 · Nov 15, 2011 · Viewed 45.5k times · Source

As you see below, is it possible to save the result? Cause, at second and third stdout.read() I couldn't reach the result.

import paramiko
import os
dssh = paramiko.SSHClient()
dssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
dssh.connect('192.168.1.250', username='root', password='pass')
import os
stdin, stdout, stderr = dssh.exec_command('ifconfig')
print stdout.read()
print ('Sleeping 2 seconds!')
os.system('sleep 2')
stdin, stdout, stderr = dssh.exec_command('ls -l')
print stdout.read()
print stdout.read()
print stdout.read()
dssh.close()

Answer

jfs picture jfs · Nov 15, 2011

Imagine that stdout is an ordinary file. What do you expect to get if you call file.read() the second time? -- nothing (empty string) unless the file has changed outside.

To save the string:

output = stdout.read()

You might find Fabric simpler to use (it uses paramiko to execute commands under the hood).