Python模块之netmiko

一、简介

此模块用于简化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模块

#前提准备模块:
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

原文地址:https://www.cnblogs.com/lisenlin/p/10489494.html

时间: 2024-10-20 21:55:21

Python模块之netmiko的相关文章

python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = False   def check_log(func): def inner(): res = func() if LOGIN_INFO: print('验证成功!') return res else: print('验证失败!') return inner   def check_admin(func)

Python模块的交叉引用问题分析

实际项目中遇到python模块相互引用问题,查资料,说是通过import局部导入的方式可以避免错误,资料如附录所述. 但更改后测试还是会出错,很疑惑!? 如果哪位读者有好的解决方法,敬请留言说明,谢谢. 所以,最好的方法是不进行交叉引用,如果需要就单独分一个模块出来. 附录:Python模块的交叉引用问题解读:How can I have modules that mutually import each other? 有下面两个文件相互引用,Python解释器报错. foo.py: from

python模块以及导入出现ImportError: No module named 'xxx'问题

python模块以及导入出现ImportError: No module named 'xxx'问题 python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模 块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用 如果你要使用的模块(py文件)和当前模块在同一目录,只要import相应的文件名就好,比 如在a.py中使用b.py:  import b 但是如果要import一个不同目录的文件(例如b.py)该怎么做

python模块搜索路径

1.电脑版 (1).python安装目录中\Lib\site-packages\下建立*.pth文件,写入模块路径 (2).添加环境变量:变量名:pythonpath;变量值:模块(文件夹)路径 ,若有多个,用半角分号";"隔开 2.手机版 在resource\site.py文件中添加代码段 import syssys.path.append("模块(文件夹)路径") 发现:第一个参数都是C:\\resource 我的理解: 程序安装盘下的site.py指定模块路径

4.python模块

python 字符串 一.注释 在python中的注释分为单行注释和多行注释    (1)单行注释:为在语句的前边加"#" 例子: #!/usr/bin/env python a = 123 print a #print a #print a #print a 执行结果如下: [[email protected] ~]# python a.py 123  (2)多行注释:可以用3对单引号(比如:''' 注释内容''') 或是3对双引号(比如:"""注释内容

使用 from import方法导入Python模块

比如我们导入一个数学计算的模块 math: >>> import math>>> print math<module 'math' (built-in)>>>>>>> print math.pi #导出圆周率的值3.14159265359>>> 我们导入math模块,在python模块学习中我们会知道,这样做会得到名math的对象,这个模块对象包含了pi这样的常量,以及一些其它的方法. 我们如果直接访问

Python 八、Python模块

一.python文件概述 1.python模块概述 可以将代码量较大的程序分割成多个有组织的.彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块 模块在物理形势上表现为以.py结尾的代码文件 一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件 模块的文件名就是模块的名字加上扩展名(.py) 每个模块都有自己的名称空间 python允许导入其它模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统 python中,模块也是对象 在一个模块的顶层定义的所有

python 学习第五天,python模块

一,Python的模块导入 1,在写python的模块导入之前,先来讲一些Python中的概念性的问题 (1)模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质是.py结尾的python文件(文件名:test.py,对应的模块名:test) (2)包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件) 2,导入的方法 (1)import module_name导入某个模块 (2)import module_name,module2_

七、Python模块和包

Python模块 Python模块是组织代码的基本方式 Python的脚本都是用扩展名为py的文本文件保存的,一个脚本可以单独运行,也可以导入另一个脚本中运行.当脚本被导入运行时,将其称为模块 cat test.py #!/usr/bin/python #coding:utf-8 from __future__ import division def a(x,y): print x+y def b(x,y): print x*y cat new.py #!/usr/bin/python impo