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实验_第1张图片

 

 

 

下面的代码来自《网络工程师的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实验_第2张图片

 

你可能感兴趣的:(python网络自动化运维paramiko实验)