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

新手上路,请多包涵

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'])
~                                                                                                          

输出如下:
图片描述

求解决,多谢各位!

阅读 6.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题