如何从paramiko获取可选择的stdin,stderr,stdout文件描述符以有效地管理长时间运行的连接?

时间:2015-03-30 14:57:41

标签: python paramiko

我想与paramiko打开一个需要双向通信的长期连接。如何获得可选的stdin,stdout和stderr文件描述符?以下内容:

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname="localhost", username="xyz")

stdin, stdout, stderr = ssh.exec_command(cmd)

print "STDIN  FILENO", stdin.channel.fileno()
print "STDOUT FILENO", stdout.channel.fileno()
print "STDERR FILENO", stderr.channel.fileno()

...为每个文件描述符打印“6”,结果证明是连接的标准输出。

但我想这样做:

r,w,e = select.select( [stdoutfd, stderrfd], [stdinfd]  )

1 个答案:

答案 0 :(得分:1)

stdin, stdout, stderr是类似文件的对象。使用stdout.readlines()之类的内容来获取数据。如果您阅读了基础channel对象,则会看到它全部在一个连接上实现。