Paramiko recv() 在交互模式下工作,但在脚本内部不起作用

Paramiko recv() works in the interactive mode but doesn't work inside script

我正在尝试使用 python 中的 paramiko 模块从其中一个开关读取横幅。这是我正在使用的代码

import socket
import sys
import paramiko
import subprocess
a=paramiko.SSHClient()
a.set_missing_host_key_policy(paramiko.AutoAddPolicy())
a.connect('10.22.158.19',username='admin',password='airwave')
b=a.invoke_shell()
b.recv_ready()
b.recv(1000)

当我在上面 运行 时,我没有得到任何输出,但是当我在脚本中评论最后一行时,当我在 shell 中执行最后一个命令时,b.recv(1000) 给出了实际输出

>>> 
>>> b.recv(1000)
'Last login: Tue Aug 22 23:10:25 2017 from 10.20.14.150\r\r\n(AirwaveMM-19) [mynode] #'
>>> 

你们中有人知道这里出了什么问题吗?

你应该这样写:

while not b.recv_ready():
    time.sleep(0.1)
print b.recv(1000)

recv_ready() 函数检查数据是否准备就绪,但不会等待数据准备就绪。