如何使用paramiko向交换机发送多条命令并接收很长的output?

发布于 2022-09-07 08:40:13 字数 1445 浏览 34 评论 0

1.需要使用paramiko模块向交换机发送两条命令。第一条'screen-length disable'用于取消单屏回显,第二条'display cur'用于输出配置文件内容。现有如下两个问题:
①paramiko的一个channel只能接收一条命令,之后channel就会关闭。这两条命令需要在一个连接下发送。
②第二条命令的回显很长(大概5000行),使用readlines()方法时就会卡顿,无输出也没有异常。
我的代码如下:

1   import paramiko                                                                                                                           
  1 import datetime
  2      
  3 time1 = datetime.datetime.now()
  4 time2 = time1.strftime("%Y-%m-%d")
  5      
  6 def ssh2(ip, username, passwd, cmd):
  7     try:
  8         ssh = paramiko.SSHClient()
  9         ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 10         ssh.connect(ip, 22, username, passwd, timeout=10)
 11         for m in cmd:
 12             stdin, stdout, stderr = ssh.exec_command(m)
 13             out = stdout.readlines()
 14             for o in out:
 15                 print(o)
 16         print('%s\tOK\n'%(ip))
 17         ssh.close()
 18     except Exception as e:
 19         print('%s\tError\n'%(ip))
 20         print(e)
 21      
 22      
 23      
 24 if __name__ == '__main__':
 25     ssh2('10.74.49.61', 'g-netops@system', '1qaz2wsxQWER', ['screen-length disable', 'dis cur'])
~                                                                                                          

输出如下:
图片描述

求解决,多谢各位!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文