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多线程http下载实现示例
Dec 30 Python
测试、预发布后用python检测网页是否有日常链接
Jun 03 Python
python中__call__方法示例分析
Oct 11 Python
Python计算程序运行时间的方法
Dec 13 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
基于python实现学生管理系统
Oct 17 Python
python中@property和property函数常见使用方法示例
Oct 21 Python
使用Python的Turtle绘制哆啦A梦实例
Nov 21 Python
Python3实现发送邮件和发送短信验证码功能
Jan 07 Python
Python如何使用vars返回对象的属性列表
Oct 17 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
Dec 21 Python
OpenCV-Python实现怀旧滤镜与连环画滤镜
Jun 09 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
建立动态的WML站点(三)
2006/10/09 PHP
关于PHP开发的9条建议
2015/07/27 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
JavaScript 获得选中文本内容的方法
2009/02/15 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
JQuery中form验证出错信息的查看方法
2013/10/08 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
JS利用正则表达式实现简单的密码强弱判断实例
2017/06/16 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
Vue的属性、方法、生命周期实例代码详解
2019/09/17 Javascript
js实现动态时钟
2020/03/12 Javascript
返回上一个url并刷新界面的js代码
2020/09/12 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
python中使用xlrd读excel使用xlwt写excel的实例代码
2018/01/31 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
Python3.9.1中使用match方法详解
2021/02/08 Python
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
初中英语教学反思
2014/01/25 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
暑期培训班招生方案
2014/08/26 职场文书
2014领导班子四风问题查摆思想汇报
2014/09/13 职场文书
2014年招商工作总结
2014/11/22 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL