python网络自动化运维paramiko实验

运行环境:
物理机:win10 1903
网络设备:EVE-NG模拟器上运行思科三层路由器
网络设备OS版本:cisco ios(versions 15.6)
python环境:pycharm 3.5
python解析器版本:3.8
实验准备:

  1. 先安装paramiko模块,请自行搜索
  2. 环境搭建可以参考我之前的文章:https://www.cnblogs.com/my-nas/p/15533750.htm
实验目的:给R4上的loopback 0口配置地址。
实验括扑:
python网络自动化运维paramiko实验
文章图片




下面的代码来自《网络工程师的python之路》这本书:
import paramiko
import time

ip = '192.168.142.135'
port = '22'#定义ip、端口、用户名
username = 'ccie'
password = 'cisco'

ssh_client = paramiko.SSHClient()#调用paramiko的SSHClient()方法,将其赋值给变量ssh_client
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#默认情况下,paramiko会拒绝所有未知的SSH公钥(publickey),使用这行代码让paramiko接受SSH服务端
#(R4)提供的公钥,这是任何时候使用paramiko都需要用到的标准配置
ssh_client.connect(hostname=ip,username=username,password=password)
print ('Sucessfully connected to ',ip)
#调用paramiko.SSHClient()的connect()函数进行SSH登录。包含基础的用户名、密码、ip和port
#并在登录成功后进行提示。

command = ssh_client.invoke_shell()#登录成功后,唤醒cisco的shell(IOS命令行),并将其赋值于command
#下面使用invoke_shell()的command()函数来对R4“发号施令”。
command.send('conf t\n')
command.send('int lo1\n')
command.send('ip add 4.4.4.4 255.255.255.255\n')
command.send('end\n')
command.send('wr\n')

time.sleep(2)
#因为python是一次性执行所有命令的,没有等待设备返回的时间,会导致回显内容不全的问题。这里手动将python休眠2s
output = command.recv(65535)#这里表示截取65535个字符的回显内容,也是paramiko一次截取的最大回显内容数。
print (output.decode('ascii'))#paramiko的回显内容格式为字节型字符串,需要用decode('ascii')解析为ASCII编码,否则会很难看。
ssh_client.close#配置完成后,使用close方法退出SSH。

实验效果:
【python网络自动化运维paramiko实验】python网络自动化运维paramiko实验
文章图片


    推荐阅读