【问题标题】:Clean recv at paramiko channel在 paramiko 频道清理 recv
【发布时间】:2017-05-10 21:05:51
【问题描述】:

我想建立 SSH 会话,运行第一个命令块,然后运行第二个命令块,但我只需要从第二个块捕获输出。 如何以更干净和正确的方式清洁 paramiko 中的 recv 缓冲区? 现在我重新建立了 SSH 会话,但在我看来它既丑陋又愚蠢

client=paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

client.connect('10.10.10.50', username='admin', password='admin')
x=client.invoke_shell()
x.send('en')
x.send('\n')
x.send('conf t')
x.send('\n')
x.send('hostname 11')
x.send('\n')
x.send('exit')
x.send('\n')
x.close()
time.sleep(1)
client.connect('10.10.10.50', username='admin', password='admin')
x=client.invoke_shell()
x.send('sh users\n')
time.sleep(1)
output=x.recv(65535)
print output

提前致谢!

【问题讨论】:

  • recv()ing 在send()ing 第二个块之前从通道中获取所有可用数据怎​​么样?
  • 是的,谢谢!

标签: python ssh paramiko


【解决方案1】:

在cmets中解决:

在发送()第二个块之前,如何从通道中接收所有可用数据? --whjm

是的,它有效,谢谢! – pnd

【讨论】:

    【解决方案2】:

    您可以尝试下面的代码在“x.send('sh users\n')”之前清除缓冲区

    while not x.recv_ready():
        time.sleep(10)
    output = x.recv(65535).decode("utf-8")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 2015-12-25
      • 2010-12-17
      • 1970-01-01
      • 2014-12-30
      • 1970-01-01
      相关资源
      最近更新 更多