「Python 网络自动化」Netmiko ——Python 使用 Netmiko 连接 H3C 网络设备

2023-11-25 08:30

本文主要是介绍「Python 网络自动化」Netmiko ——Python 使用 Netmiko 连接 H3C 网络设备,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

「Python 网络自动化」系列文章总目录


之前文章在 Netmiko 中使用 TextFSM中潦草说了一下如使用 textfsm,并未提及 Netmiko。
我在学习过程中一直没有系统的输出笔记以及文档,现在重新学习 Netmiko,并与大家进行分享。

文章目录

    • 什么是 Netmiko
    • 如何使用
      • 安装
      • 使用
      • 基本使用方法
      • 执行多条命令
    • 登录设备后发生了什么?
      • def send_command():
      • def send_config_set():
    • 支持的设备列表

什么是 Netmiko

是一个基于 paramiko 二次封装的,可以通过 SSH 连接多种网络设备的库,大约从 3.0 版本以来,加入了对国内厂商的支持,目前来看是非常不错的网络自动化工具。

目前支持设备几乎覆盖了市面上大部分设备,包括锐捷、华三、华为、思科、f5 等等,具体的列表见后文。

如何使用

安装

首先需要具备Python3.6以上版本的环境,使用pip可以直接安装。
国内下载速度很慢,可以参考pip 设置国内源进行配置。

# 安装
pip install netmiko

出现 Successfully installed netmiko-3.3.3 即为安装成功。

使用

由于本人一直从事于 H3C 网络相关的工作,故各种关于网络设备的实操均以 H3C 为例。
实验环境:HCL 2.1.2
在这里插入图片描述

基本使用方法

# 首先导入处理连接
from netmiko import ConnectHandler as ch# 通过字典方式定义设备登录信息
host = {'device_type': 'hp_comware','host': '192.168.56.20','username': 'netdevops','password': 'netdevops','port': 22,'secret': '', # enable密码,没有可以不写这行
}
# 连接设备,conn 可以理解为一个已经连接到设备上的终端,此时可以直接执行命令
conn = ch(**host)
# 通过 send_command 方法执行命令,查看接口信息,返回值是字符串
output = conn.send_command('display ip int brief')
print(output)

以下为输出信息,可以看到已经从设备上采集到了需要的信息
在这里插入图片描述

执行多条命令

from netmiko import ConnectHandler as ch
# 通过字典方式定义设备登录信息
host = {'device_type': 'hp_comware','host': '192.168.56.20','username': 'netdevops','password': 'netdevops','port': 22,'secret': '', # enable密码,没有可以不写这行
}
# 连接设备
conn = ch(**host)
# 定义一个命令列表,比如为G0/1配置一个IP地址
commands = ['int g0/1', 'ip add 1.1.1.1 30', 'desc netmiko_config']
# 这个时候可以使用 send_config_set 方法执行多条命令
output = conn.send_config_set(commands)
print(output)

以下为执行后的结果
在这里插入图片描述
设备上已经配置完成。
在这里插入图片描述

登录设备后发生了什么?

Netmiko 可以通过 SSH 配置网络设备,那么它登录到设备之后,做了什么动作呢?
我们可以从网络设备的 LOG 中看到相关信息,以下为本次实验中的一些 LOG:
在这里插入图片描述

def send_command():

从 LOG 的第二部分可以看到,当执行 send_command 方法时,netmiko 先输入了取消分屏的命令 screen-length disable ,在进行了对应的命令,这样在有大量输出时,可以保证输出内容是完整的。

其实不仅是华三设备,Netmiko 对其他设备如思科、华为等都做了适配,登录设备之后,都会先执行对应的取消分屏的命令。

所以,这里可以总结一个注意点,即:
设备登录使用的用户名需要有执行取消分屏命令的权限(比如 level 0 用户可能无该命令,则无法收集信息)。

def send_config_set():

从 LOG 的第一部分可以看到,当执行send_config_set 方法时,netmiko 不但输入了取消分屏的命令,还执行了system-view进入了系统视图下,之后才执行了我们输入的命令。

从这个方法的名字 send_config_set 可以看出,netmiko 认为此时输入的是一系列配置命令,所以直接帮我们进入了系统视图下。

对比其他设备如 Cisco,Netmiko 则会帮我们执行 config terminal进入配置模式,感兴趣的可以自行进行验证。

当命令执行完成,Netmiko 帮我们退出了系统视图,之后中断了 SSH 连接。

这里第二个注意点:
使用 send_config_set 方法时,需要用户具有配置权限。


支持的设备列表

a10
accedian
alcatel_aos
alcatel_sros
apresia_aeos
arista_eos
aruba_os
avaya_ers
avaya_vsp
brocade_fastiron
brocade_netiron
brocade_nos
brocade_vdx
brocade_vyos
calix_b6
checkpoint_gaia
ciena_saos
cisco_asa
cisco_ios
cisco_nxos
cisco_s300
cisco_tp
cisco_wlc
cisco_xe
cisco_xr
cloudgenix_ion
coriant
dell_dnos9
dell_force10
dell_isilon
dell_os10
dell_os6
dell_os9
dell_powerconnect
dlink_ds
eltex
eltex_esr
endace
enterasys
extreme
extreme_ers
extreme_exos
extreme_netiron
extreme_nos
extreme_slx
extreme_vdx
extreme_vsp
extreme_wing
f5_linux
f5_ltm
f5_tmsh
flexvnf
fortinet
generic_termserver
hp_comware
hp_procurve
huawei
huawei_olt
huawei_smartax
huawei_vrpv8
ipinfusion_ocnos
juniper
juniper_junos
juniper_screenos
keymile
keymile_nos
linux
mellanox
mellanox_mlnxos
mikrotik_routeros
mikrotik_switchos
mrv_lx
mrv_optiswitch
netapp_cdot
netscaler
nokia_sros
oneaccess_oneos
ovs_linux
paloalto_panos
pluribus
quanta_mesh
rad_etx
ruckus_fastiron
ruijie_os
sophos_sfos
ubiquiti_edge
ubiquiti_edgeswitch
ubiquiti_unifiswitch
vyatta_vyos
vyos
watchguard_fireware

这篇关于「Python 网络自动化」Netmiko ——Python 使用 Netmiko 连接 H3C 网络设备的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/423464

相关文章

C++使用栈实现括号匹配的代码详解

《C++使用栈实现括号匹配的代码详解》在编程中,括号匹配是一个常见问题,尤其是在处理数学表达式、编译器解析等任务时,栈是一种非常适合处理此类问题的数据结构,能够精确地管理括号的匹配问题,本文将通过C+... 目录引言问题描述代码讲解代码解析栈的状态表示测试总结引言在编程中,括号匹配是一个常见问题,尤其是在

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本