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 相关文章推荐
使用graphics.py实现2048小游戏
Mar 10 Python
Python基础教程之tcp socket编程详解及简单实例
Feb 23 Python
python3中set(集合)的语法总结分享
Mar 24 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
python的dataframe和matrix的互换方法
Apr 11 Python
python安装twisted的问题解析
Aug 21 Python
Pytorch之finetune使用详解
Jan 18 Python
如何使用Python发送HTML格式的邮件
Feb 11 Python
Python单链表原理与实现方法详解
Feb 22 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 Python
用python计算文件的MD5值
Dec 23 Python
Django与AJAX实现网页动态数据显示的示例代码
Feb 24 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遍历目录函数opendir()、readdir()、closedir()、rewinddir()总结
2014/11/18 PHP
3种方法轻松处理php开发中emoji表情的问题
2016/07/18 PHP
用ASP将SQL搜索出来的内容导出为TXT的代码
2007/07/27 Javascript
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
2009/10/20 Javascript
禁止你的左键复制实用技巧
2013/01/04 Javascript
JavaScript实现的简单幂函数实例
2015/04/17 Javascript
Js和JQuery获取鼠标指针坐标的实现代码分享
2015/05/25 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
cocos2dx骨骼动画Armature源码剖析(一)
2015/09/08 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
D3.js实现文本的换行详解
2016/10/14 Javascript
详解jQuery中的事件
2016/12/14 Javascript
JS获得一个对象的所有属性和方法实例
2017/02/21 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
js调用设备摄像头的方法
2018/07/19 Javascript
Vue通过ref父子组件拿值方法
2018/09/12 Javascript
微信小程序开发的基本流程步骤
2019/01/31 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
解决ie11 SCRIPT5011:不能执行已释放Script的代码问题
2019/05/05 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
这应该是最详细的响应式系统讲解了
2019/07/22 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
基于Element封装一个表格组件tableList的使用方法
2020/06/29 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
python中函数传参详解
2016/07/03 Python
python实现泊松图像融合
2018/07/26 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
2019/04/05 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
TensorFlow tf.nn.conv2d实现卷积的方式
2020/01/03 Python
Python中Selenium库使用教程详解
2020/07/23 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
德国领先的大尺码和超大尺码男装在线零售商:Bigtex
2019/06/22 全球购物
生物科学专业个人求职信范文
2013/12/05 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书