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()
函数检查数据是否准备就绪,但不会等待数据准备就绪。
我正在尝试使用 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()
函数检查数据是否准备就绪,但不会等待数据准备就绪。