Python netmiko模块的使用


Posted in Python onFebruary 14, 2020

一、简介

此模块用于简化paramiko与网络设备之间的ssh连接,可在windows与Unix平台使用 

二、目前支持的设备

(2019.03.07)

Regularly tested
  Arista vEOS
  Cisco ASA
  Cisco IOS
  Cisco IOS-XE
  Cisco IOS-XR
  Cisco NX-OS
  Cisco SG300
  HP Comware7
  HP ProCurve
  Juniper Junos
  Linux


Limited testing
  Alcatel AOS6/AOS8
  Apresia Systems AEOS
  Calix B6
  Cisco AireOS (Wireless LAN Controllers)
  Dell OS9 (Force10)
  Dell OS10
  Dell PowerConnect
  Extreme ERS (Avaya)
  Extreme VSP (Avaya)
  Extreme VDX (Brocade)
  Extreme MLX/NetIron (Brocade/Foundry)
  Huawei
  IP Infusion OcNOS
  Mellanox
  NetApp cDOT
  OneAccess
  Palo Alto PAN-OS
  Pluribus
  Ruckus ICX/FastIron
  Ubiquiti EdgeSwitch
  Vyatta VyOS



Experimental
  A10
  Accedian
  Aruba
  Ciena SAOS
  Citrix Netscaler
  Cisco Telepresence
  Check Point GAiA
  Coriant
  Dell OS6
  Dell EMC Isilon
  Eltex
  Enterasys
  Extreme EXOS
  Extreme Wing
  Extreme SLX (Brocade)
  F5 TMSH
  F5 Linux
  Fortinet
  MRV Communications OptiSwitch
  Nokia/Alcatel SR-OS
  QuantaMesh
  Rad ETX

三、实验环境

1.操作系统:win10

2.python版本: python3.6.6

3.netmiko模块版本:2.3.0

四、安装netmiko模块

#前提准备模块(安装netmiko可自动下载依赖项):
Paramiko >= 2.4.1
scp >= 0.10.0
pyyaml
pyserial
textfsm

#安装netmiko
pip install netmiko

ps:没有全部安装前提模块,在使用netmiko没有报错,说明运行代码里没有调用到而已,而不是不需要

五、简单实例

5.1 执行查看命令:show ip int brief

from netmiko import ConnectHandler

cisco = {
  'device_type':'cisco_ios',
  'host':'ip地址',
  'username':'用户名',
  'password':'密码'
}
net_connect = ConnectHandler(**cisco)
##或者
# net_connect = ConnectHandler(device_type='cisco_ios',host='IP地址',username='用户名',password='密码')

#找到目前所在视图
current_view = net_connect.find_prompt()
print(current_view)

#执行命令,返回结果为字符串,赋值给output
output = net_connect.send_command('show ip int brief')
print(output)

# #此为在windows里如果\n不能显示回车,则进行如下语句格式化
# o_list = output.split("\n")
# for line in o_list:
#   print(line)

5.2 执行配置命令:手动关闭接口G1/0/29

from netmiko import ConnectHandler

cisco = {
  'device_type':'cisco_ios',
  'host':'ip地址',
  'username':'用户名',
  'password':'密码'
}
net_connect = ConnectHandler(**cisco)
##或者
# net_connect = ConnectHandler(device_type='cisco_ios',host='IP地址',username='用户名',password='密码')


#要配置的命令
config_commands = ['interface GigabitEthernet1/0/29','shutdown']
#提交要配置的命令,input为提交的真实内容
input = net_connect.send_config_set(config_commands)

#验证shutdown是否执行成功
output = net_connect.send_command('show run inter gi1/0/29')
print(output)

# #此为在windows里如果\n不能显示回车,则进行如下语句格式化
# o_list = output.split("\n")
# for line in o_list:
#   print(line)

六、常用方法

  • net_connect.send_command()        # 向下发送命令,返回输出(基于模式)
  • net_connect.send_command_timing() # 沿通道发送命令,返回输出(基于时序)
  • net_connect.send_config_set() # 将配置命令发送到远程设备
  • net_connect.send_config_from_file() # 发送从文件加载的配置命令
  • net_connect.save_config() # 将running#config保存到startup#config
  • net_connect.enable() # 输入启用模式
  • net_connect.find_prompt() # 返回当前路由器提示符
  • net_connect.commit() # 在Juniper和IOS#XR上执行提交操作
  • net_connect.disconnect() # 关闭连接
  • net_connect.write_channel() # 通道的低级写入
  • net_connect.read_channel() # 通道的低级写入

 七、参考文献

1.https://pynet.twb-tech.com/blog/automation/netmiko.html

2.https://github.com/ktbyers/netmiko

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中操作列表之list.extend()方法的使用
May 20 Python
用Django实现一个可运行的区块链应用
Mar 08 Python
django ajax json的实例代码
May 29 Python
python 利用文件锁单例执行脚本的方法
Feb 19 Python
python获取指定日期范围内的每一天,每个月,每季度的方法
Aug 08 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
Python类和实例的属性机制原理详解
Mar 21 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
Jul 07 Python
详解Selenium-webdriver绕开反爬虫机制的4种方法
Oct 28 Python
Pytorch实验常用代码段汇总
Nov 19 Python
Python 调用C++封装的进一步探索交流
Mar 04 Python
pytorch模型存储的2种实现方法
Feb 14 #Python
Python3运算符常见用法分析
Feb 14 #Python
pytorch实现从本地加载 .pth 格式模型
Feb 14 #Python
python 实现线程之间的通信示例
Feb 14 #Python
Python3变量与基本数据类型用法实例分析
Feb 14 #Python
OpenCV中VideoCapture类的使用详解
Feb 14 #Python
Python networkx包的实现
Feb 14 #Python
You might like
php对数组排序代码分享
2014/02/24 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
jQuery插件StickUp实现网页导航置顶
2015/04/12 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
NodeJS使用七牛云存储上传文件的方法
2017/07/24 NodeJs
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
基于Koa2写个脚手架模拟接口服务的方法
2018/11/27 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
详解BootStrap表单验证中重置BootStrap-select验证提示不清除的坑
2019/09/17 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
[14:25]教你分分钟做大人:主宰(HEROS)
2014/12/08 DOTA
[45:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第二场 6.2
2018/06/04 DOTA
Python中的二叉树查找算法模块使用指南
2014/07/04 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
关于python列表增加元素的三种操作方法
2018/08/22 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
2019/08/20 Python
python匿名函数lambda原理及实例解析
2020/02/07 Python
pandas DataFrame 数据选取,修改,切片的实现
2020/04/24 Python
3D动画《斗罗大陆》上线当日播放过亿
2021/03/16 国漫
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
PHP开发工程师面试问题集锦
2012/11/01 面试题
交通安全演讲稿
2014/01/07 职场文书
护士思想汇报
2014/01/12 职场文书
个人廉洁自律承诺书
2014/03/27 职场文书
集体生日活动方案
2014/08/18 职场文书
邀请函的格式
2015/01/30 职场文书
高三物理教学反思
2016/02/20 职场文书
源码安装apache脚本部署过程详解
2022/09/23 Servers