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函数的笔记整理
Apr 07 Python
Python argv用法详解
Jan 08 Python
Python实现快速排序和插入排序算法及自定义排序的示例
Feb 16 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
Jun 02 Python
Python遍历目录并批量更换文件名和目录名的方法
Sep 19 Python
Python递归函数定义与用法示例
Jun 02 Python
详解Python异常处理中的Finally else的功能
Dec 29 Python
Python语言描述连续子数组的最大和
Jan 04 Python
新手入门Python编程的8个实用建议
Jul 12 Python
matlab 计算灰度图像的一阶矩,二阶矩,三阶矩实例
Apr 22 Python
python 写一个性能测试工具(一)
Oct 24 Python
详解在OpenCV中如何使用图像像素
Mar 03 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
是否存在第一台收音机的说法
2021/03/01 无线电
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
Zend Framework连接Mysql数据库实例分析
2016/03/19 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
ThinkPHP5框架缓存查询操作分析
2018/05/30 PHP
类之Prototype.js学习
2007/06/13 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
2011/07/31 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
让JavaScript中setTimeout支持链式操作的方法
2015/06/19 Javascript
你有必要知道的25个JavaScript面试题
2015/12/29 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
JS改变页面颜色源码分享
2018/02/24 Javascript
Vue2 监听属性改变watch的实例代码
2018/08/27 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
微信小程序实现拖拽功能
2019/09/26 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
python实现360皮肤按钮控件示例
2014/02/21 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
使用 Python 遍历目录树的方法
2020/02/29 Python
jupyter实现重新加载模块
2020/04/16 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
Bluebella德国官网:英国性感内衣和睡衣品牌
2019/11/08 全球购物
临床医学专业学生的自我评价分享
2013/11/21 职场文书
环境日宣传活动总结
2014/07/09 职场文书
升学宴演讲稿
2014/09/01 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
高三毕业感言
2015/07/30 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers