import
time
client
=
paramiko
.
SSHClient
(
)
client
.
set_missing_host_key_policy
(
paramiko
.
AutoAddPolicy
(
)
)
client
.
connect
(
hostname
=
hostname
,
username
=
username
,
password
=
password
)
chan
=
client
.
invoke_shell
(
)
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.