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 11 Python
对于Python中RawString的理解介绍
Jul 07 Python
numpy自动生成数组详解
Dec 15 Python
Python下载网络小说实例代码
Feb 03 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
python爬虫中多线程的使用详解
Sep 23 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
Python 读取WAV音频文件 画频谱的实例
Mar 14 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
python如何实现DES加密
Sep 21 Python
详解Django关于StreamingHttpResponse与FileResponse文件下载的最优方法
Jan 07 Python
python中tkinter复选框使用操作
Nov 11 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三元运算的2种写法代码实例
2014/05/12 PHP
PHP迭代器和生成器用法实例分析
2019/09/28 PHP
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
js冒泡、捕获事件及阻止冒泡方法详细总结
2014/05/08 Javascript
jquery实现页面关键词高亮显示的方法
2015/03/12 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
windows系统下更新nodejs版本的方案
2017/11/24 NodeJs
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
jquery实现轮播图特效
2020/04/12 jQuery
vue.js实现照片放大功能
2020/06/23 Javascript
vue项目如何监听localStorage或sessionStorage的变化
2021/01/04 Vue.js
js面向对象封装级联下拉菜单列表的实现步骤
2021/02/08 Javascript
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
Python字典创建 遍历 添加等实用基础操作技巧
2018/09/13 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
selenium+python实现自动登陆QQ邮箱并发送邮件功能
2019/12/13 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
HTML5调用手机发短信和打电话功能
2020/04/29 HTML / CSS
智能室内花园:Click & Grow
2021/01/29 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
清华大学自主招生自荐信
2014/01/29 职场文书
小学生家长评语集锦
2014/01/30 职场文书
致全体运动员广播稿
2014/02/01 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
行政专员的岗位职责
2014/03/10 职场文书
体现团队精神的口号
2014/06/06 职场文书
师范学院毕业生求职信
2014/06/24 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
2019年“我为祖国点赞”演讲稿(3篇)
2019/09/26 职场文书
linux中nohup和后台运行进程查看及终止
2021/06/24 Python