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 相关文章推荐
python3抓取中文网页的方法
Jul 28 Python
Django与JS交互的示例代码
Aug 23 Python
django组合搜索实现过程详解(附代码)
Aug 06 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
Sep 18 Python
python实现修改固定模式的字符串内容操作示例
Dec 30 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
Django values()和value_list()的使用
Mar 31 Python
Python3爬虫中Selenium的用法详解
Jul 10 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
详解Python中的进程和线程
Jun 23 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 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
用文本文件制作留言板提示(上)
2006/10/09 PHP
php 404错误页面实现代码
2009/06/22 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
php array_values 返回数组的值实例详解
2016/11/17 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
js预载入和JavaScript Image()对象使用介绍
2011/08/28 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
javascript折半查找详解
2015/01/26 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
AngularJS用户选择器指令实例分析
2016/11/04 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
js实现掷骰子小游戏
2019/10/24 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
js实现随机点名程序
2020/09/17 Javascript
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
python机器学习之随机森林(七)
2018/03/26 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
python文本数据处理学习笔记详解
2019/06/17 Python
使用Tensorflow实现可视化中间层和卷积层
2020/01/24 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
类和结构的区别
2012/08/15 面试题
行政管理专业推荐信
2013/11/02 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
导师推荐信范文
2014/05/09 职场文书
群教班子对照检查材料
2014/08/26 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书