python网络自动化运维paramiko实验
运行环境:
物理机:win10 1903
网络设备:EVE-NG模拟器上运行思科三层路由器
网络设备OS版本:cisco ios(versions 15.6)
python环境:pycharm 3.5
python解析器版本:3.8
实验准备:
- 先安装paramiko模块,请自行搜索
- 环境搭建可以参考我之前的文章:https://www.cnblogs.com/my-nas/p/15533750.htm
实验括扑:
文章图片
下面的代码来自《网络工程师的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实验】
文章图片
推荐阅读
- parallels|parallels desktop 解决网络初始化失败问题
- 猎杀IP
- python学习之|python学习之 实现QQ自动发送消息
- 逻辑回归的理解与python示例
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- Python基础|Python基础 - 练习1
- 自媒体形势分析
- 数学大作战
- Python爬虫|Python爬虫 --- 1.4 正则表达式(re库)