我想与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] )
答案 0 :(得分:1)
stdin, stdout, stderr
是类似文件的对象。使用stdout.readlines()
之类的内容来获取数据。如果您阅读了基础channel
对象,则会看到它全部在一个连接上实现。