添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
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() 来重新编码保持格式。

1. paramiko 概述 ssh 是一个协议,Open SSH 是其中一个开源实现, paramiko Python 的一个库,实现了 SSH v2协议(底层使用cryptography)。 有了 Paramiko 以后,我们就可以在 Python 代码中直接使用 SSH 协议对远程服务器执行操作,而不是通过 ssh 命令 对远程服务器进行操作。 由于 paramiko 属于第三方库,所以需要使用如下 命令 先行安装 2.安装 paramiko pip install paramiko 3.常用方法 connect():实现远程服务器的 连接 与认证,对于该方法只有hostname是必传参数。 hostname 连接 的目标主机 python 脚本 连接 交换机 ,自动执行 命令 python 脚本 连接 交换机 ,自动执行 命令 ,查询 交换机 端口的学习mac地址,自动写入txt中。设置定时器,每xx秒执行一次,自动对比上次返回结果,TXT中保存比较全的一次查询结果。 本人已经在ensp模拟器中测试成功了,文章最后附上拓扑图。 import paramiko import time import sys import threading def MAC1(): # 创建 SSH 对象 ssh = paramiko . SSH Client( # connect to client client.connect('192.168.254.141',22,'test','test',allow_agent=False,look_... I am adapting a Python script to be OS independent and run on Windows. I have changed its ssh system calls to calls to paramiko functions. I am stuck with the issue of http proxy authentication. In Un... ssh _client = paramiko . SSH Client() # 自动处理第一次 连接 的yes或者no的问题 ssh _client.set_missing_host_key_policy( paramiko .AutoAddPolicy) # port = '22' # usernam. # from getpass import getpass #now_time = str(time.localtime().tm_year) + str(time.localtime().tm_mon) + str(time.localtime().tm_mday) # 获取当前日期时间 now =. ssh con= paramiko . SSH Client() ssh con.set_missing_host_key_policy( paramiko .AutoAddPolicy()) ssh con.connect(ip,port,username,password,compres.