用于网络工程的最佳 Python 库2024 年 08 月 29 日 | 阅读 9 分钟 网络工程已变得越来越流行,并且网络工程师可以使用各种工具来自动化网络设置,从而改变了游戏规则。假设我们在这个领域仍然是初学者,那么以下教程将通过向我们展示您应该了解的正确 Python 库来简化我们的工作。 Netmiko 库这个 Python 库在设计时考虑了网络设备。它提供了 SSHv2 协议的 Paramiko Python 实现之上的抽象层,并将较低级别的功能隐藏在自动化工程师之外。 Netmiko 库的目的这个库的目的是:
支持的平台
Netmiko 库的实现示例:我们正在使用 Netmiko 库建立与远程服务器的连接。 输出 >>> net_connects 说明 从 Netmiko 库中导入模块 "ConnectHandler"。您可以将此模块 ConnectHandler 视为 Netmiko 库的第一个入口点。它会为您选择正确的类,根据该类创建一个 Netmiko 对象,并建立与系统的 SSH 连接。 使用 ConnectHandler 选择类并启动 SSH 连接。 这需要我们发送诸如以下参数:
变量 'net_connects' 是与任何类型的远程设备可用的 SSH 连接。 执行显示命令从我们的设备中检索显示命令输出。这通过使用 'send_command()' 函数完成。 源代码 输出 Protocol Addresses Age (minimum) H/w Addr Type Interface Internet 10.0.2.2 57 5255.0a000.0202 ARPA GigabitEthernet Internet 10.0.2.3 116 5255.0a000.0203 ARPA GigabitEthernet Internet 10.0.2.15 - 5254.00012.3456 ARPA GigabitEthernet 说明 Netmiko 库会自动获取输出,剥离回显命令,并剥离路由器尾随提示。它试图只留下显示命令输出。输出显示协议地址,如 Internet 10.0.2.2、Internet 10.0.2.3、Internet 10.0.2.1 我们的完整脚本如下源代码 输出:上述脚本的执行结果如下 $ Python show_command.py Protocol Address Age (min) Hardware Addr Type Interface Internet 10.0.2.2 57 5255.0a000.0202 ARPA GigabitEthernet Internet 10.0.2.3 116 5255.0a000.0203 ARPA GigabitEthernet Internet 10.0.2.15 - 5254.00012.3456 ARPAGigabitEthernet 进行配置更改使用 Netmiko 库进行一些配置更改。您可以使用 Netmiko 的 send_config_set() 函数来完成此操作。 说明 首先,我们设置建立 net_connects 对象连接所需的所有参数。然后我们创建配置列表命令,然后将该列表传递给方法 'send_config_set()'。 “cfg_outputs”变量将显示在该 SSH 会话期间发生了什么。Netmiko 将自动执行一些操作,例如进入和退出配置模式。 通过执行 'save_config()' 方法将您的运行配置保存到启动配置。 NAPALMNAPALM,即支持多供应商的网络自动化和可编程性抽象层,是一个 Python 库,它利用统一的 API 来改进与网络设备的自动化交互。 什么是 NAPALM?NAPALM(Network Automation and Programmability Abstraction Layer with Multivendor support)是 David Barroso 和 Elisa Jasinska 于 2015 年创建和开发的 Python 库。其目标是统一来自多个网络设备供应商的网络设备访问、数据收集和配置控制。 NAPALM 支持通过多种方法连接到各种设备,以更改配置或获取信息/数据。 库目的NAPALM 统一的 API 允许使用相同的函数进行数据或控制配置,无论操作系统可能是什么。 维护 NAPALM 的官方团队,也称为“核心开发人员”,多年来一直在改进和开发框架。他们目前支持:
NAPALM 是如何工作的?如果我们想通过 Python 访问具有不同操作系统的各种网络设备,我们可能需要为每个操作系统使用开发的库。在这种情况下使用网络可编程性将是一项艰巨的任务。为了方便编程,NAPALM 添加了一个抽象层。该层允许我们使用相同的功能在不同的操作系统上执行相同的操作。 它是如何做到的?NAPALM 通过统一我们访问网络系统的方式来隐藏这个抽象层。 这得益于网络驱动概念的引入。每次我们需要与网络设备交互时,我们都需要指定我们将要与之对话的操作系统,NAPALM 将选择正确的网络驱动。选择一个包含与该操作系统相关的所有功能的库。 如果从另一个角度来看,它基本上就像在其他 API 之上拥有一个 API。 NAPALM 安装安装 NAPALM 的要求如下
现在使用以下命令继续安装 NAPALM 功能测试说明 首先,我们设置建立 ios_router 对象连接所需的所有参数。调用对象“ios_router”,它调用 open() 方法以启动与路由器的连接。 为了验证连接,使用了 is_alive() 方法;正如我们在输出中看到的,它是 True。因此,已连接到路由器。 运行时输出 Connecting to IOS Router. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Checking ios router connection status: { 'is_alive': True } Testing completed ! ! ! 精灵这是一个为测试自动化网络而制作的 Python 模块。它易于使用,并为工程师提供了对给定网络大量数据的快速分析。 Genie 是一个 Python 库,它包含了网络测试自动化所需的所有方法。Genie 是 pyATS 的库解决方案。Genie 的主要目标是促进快速开发、支持可重用库以及简化测试自动化编写。 库目的Genie 以面向对象的方式利用了 Python 的所有优势
Genie 战略性地利用反射令牌和查询算法来实现这些新的创新结果。 Genie 库是开源的,托管在
Genie 背后的动机
设计限制是从事自动化开发的工程师反复出现的问题。例如,带有嵌入式静态配置或特定 TGN 接口的脚本很难开发,并且几乎不可能在它们最初预期的操作系统、平台、版本或分支以外的任何其他系统上使用。 这些结构限制也阻碍了团队之间的协作,因为它们阻止了他们相互分享库。 工程师通常会投入大量资金重新开发现有库以克服这些构建限制。这种传统方法通常依赖于过时的命名空间、功能和争用驱动的编码技术。 Genie 具有四个基本功能
库 - ncclientPython 库 "ncclient" 旨在轻松开发 NETCONF 脚本和自动化。 要求
如果您使用的是 Debian/Ubuntu,请安装以下库(通过 aptitude 或 apt-get)
Python 库 "ncclient" 的安装或通过 pip 命令 Python 库 "ncclient" 的示例 Python 库 "ncclient" 支持的设备处理程序实例化与已知类型 NETCONF 服务器的连接时
ncclient 库的关键功能
请求库Requests 库是 Python 中向指定 URL 发出 HTTP 请求的关键部分之一。当向 URI 发出请求时,它会返回响应。Python Requests 提供了管理响应和请求的内置功能。无论是网络抓取还是 REST API,都必须学习 Requests 才能继续进行这些操作。 为什么要学习 Python Requests 模块?
通过利用 GET 参数实现 Requests 库我们使用 GET 方法通过 URL 以键值对配置将数据传递到 Web 服务器。 源代码 输出:运行上面的代码。 Response Content: { "arg" : { "course" : [ "Python", "SQL" ], "websites": "dataquest.io" }, "header": { "Accept" : " */* ", "Accept--Encoding": "gzip, deflate", "Hosts": "httpbin.org", "User-Agents": "python-requests/2.27.1", "X-Amzn-Trace-Ids": "Root=1-61e7e066-5d0cacfb49c3c1c3465bbfb2" }, "origin": "121.122.65.155", "url": "http://httpbin.org/get?website=dataquest.io&courses=Python&course=SQL" } 说明 GET 方法允许我们使用 params 参数传递键值对的字典。我们来试试看。响应内容采用 JSON 格式,我们通过 param 参数传递的键值对出现在响应的 arguments 部分。 响应内容的头部包含主机名、用户代理、编码类型等。 同样,url 部分 http://httpbin.org/get?website=dataquest.io&courses=Python&course=SQL 包含编码后的 URL 以及传递给服务器的参数。 下一主题文本、句子、单词标记化如何工作 |
我们请求您订阅我们的新闻通讯以获取最新更新。