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私有属性和方法实例分析
Jan 15 Python
Python实现获取某天是某个月中的第几周
Feb 11 Python
在python的类中动态添加属性与生成对象
Sep 17 Python
python kmeans聚类简单介绍和实现代码
Feb 23 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
Python匿名函数及应用示例
Apr 09 Python
Django高级编程之自定义Field实现多语言
Jul 02 Python
python中open函数的基本用法示例
Sep 07 Python
python实现五子棋游戏(pygame版)
Jan 19 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
python+excel接口自动化获取token并作为请求参数进行传参操作
Nov 10 Python
使用tensorflow 实现反向传播求导
May 26 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中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
php使用百度翻译api示例分享
2014/01/31 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP生成和获取XML格式数据的方法
2016/03/04 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
prototype.js的Ajax对象
2006/09/23 Javascript
编写高性能的JavaScript 脚本的加载与执行
2010/04/19 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
jQuery之过滤元素操作小结
2013/11/30 Javascript
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
运用JQuery的toggle实现网页加载完成自动弹窗
2014/03/18 Javascript
JavaScript动态生成二维码图片
2016/04/20 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
基于JavaScript实现自定义滚动条
2017/01/25 Javascript
JS实现自定义状态栏动画文字效果示例
2017/10/12 Javascript
判断div滑动到底部的scroll实例代码
2017/11/15 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
js实现ajax的用户简单登入功能
2020/06/18 Javascript
Javascript执行上下文顺序的深入讲解
2020/11/04 Javascript
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
Django 多环境配置详解
2019/05/14 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
2020/04/22 Python
美赞臣新加坡官方旗舰店:Enfagrow新加坡
2019/05/15 全球购物
大二自我鉴定范文
2013/10/05 职场文书
《纸船和风筝》教学反思
2014/02/15 职场文书
感恩寄语大全
2014/04/11 职场文书
承诺书样本
2014/08/30 职场文书
大学生暑期社会实践证明范本
2014/10/24 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
保研导师推荐信
2015/03/25 职场文书
幼儿园教师安全责任书
2015/05/08 职场文书
舞出我人生观后感
2015/06/16 职场文书