一段小demo:

import paramiko
import time
client = paramiko.SSHClient() 			#创建SSH连接
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())	#自动确认陌生设备
client.connect(hostname=hostname,
				username=username,
				password=password) #连接
chan = client.invoke_shell()			#打开channel
chan.send('screen-length 0 tem \n')		#输入命令
time.sleep(1)
chan.send('dis cur \n')
time.sleep(5)							#设置等待时间
info = chan.recv(99999).decode()		#接收输出信息
client.close()

首先安装并导入paramiko,用pycharm的可以直接去Files >> Settings >> Project:xxxxx >>Python Interpreter右边的+号搜索paramiko直接安装,也可以在终端用命令安装pip install paramiko

我的思路:

查看交换机路由器经常用的肯定是show run或者dis cur。直接输入命令,不会一下输出所有的配置信息,需要我们手动按空格键。要在脚本里面实现这个逻辑判断会浪费大量时间,所以就用到了screen-length 0 tem 这就引发了第二个问题,多命令输入。其实不仅如此,像思科或者锐捷的设备查看配置要进到特权模式才能看,所以多命令输入不可避免。我也试过了exec_command这个方法,在多命令的情况下并不好用,所以选择了send方法。
第三个问题出现了,当我一股脑输入了chan.send('screen-length 0 tem \n')chan.send('dis cur \n')。在测试运行的时候却发现配置并没有打印全,且不报错。经过了搜索,发现我没有设置等待时间,导致信息没输出完就被接收了。
最后一个问题就是当我接收到了所有信息,不管时打印在终端还是输出在文本里,原本交换机上的格式没有了。这里就需要在recv()后面加上decode()来重新编码保持格式。