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写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
tensorflow输出权重值和偏差的方法
Feb 10 Python
Python中pandas模块DataFrame创建方法示例
Jun 20 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
python读取文件名并改名字的实例
Jan 07 Python
numpy基础教程之np.linalg
Feb 12 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
在Django的View中使用asyncio的方法
Jul 12 Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 Python
基于Python的一个自动录入表格的小程序
Aug 05 Python
Python中Pyspider爬虫框架的基本使用详解
Jan 27 Python
python tkinter实现下载进度条及抖音视频去水印原理
Feb 07 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
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
2016/10/14 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
Javascript 跨域访问解决方案
2009/02/14 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
Jq通过td获取同行其它列td的方法
2016/10/05 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
Javascript实现购物车功能的详细代码
2018/05/08 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
详解JSON Web Token 入门教程
2018/07/30 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
解决layer弹出层msg的文字不显示的问题
2019/09/11 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
JavaScript实现五子棋小游戏
2020/10/26 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
Python栈类实例分析
2015/06/15 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
pyenv命令管理多个Python版本
2017/03/26 Python
python3 对list中每个元素进行处理的方法
2018/06/29 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python next()和iter()函数原理解析
2020/02/07 Python
深入浅析python的第三方库pandas
2020/02/13 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
selenium判断元素是否存在的两种方法小结
2020/12/07 Python
Django解决frame拒绝问题的方法
2020/12/18 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
制衣厂各岗位职责
2013/12/02 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
超市开学活动方案
2014/03/01 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
委托代理人授权委托书范本
2014/09/24 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书