0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简化网络自动化任务编排框架Nornir的用法

网络技术干货圈 来源:网络技术干货圈 2023-05-04 14:25 次阅读

Nornir是一个基于Python的自动化编排框架,旨在简化网络自动化的任务。它提供了一些基本的操作,例如SSH,Telnet,HTTP,以及很多网络设备的API。在这篇文章中,我们将介绍Nornir框架的基本用法和一些常见的例子。

86a509b6-e5b2-11ed-ab56-dac502259ad0.png

安装

你可以通过以下命令安装Nornir框架:

pipinstallnornir

用法

以下是一个简单的Nornir代码示例,它打印出了一个主机列表:

fromnornirimportInitNornir

nr=InitNornir(config_file="config.yaml")

forhostinnr.inventory.hosts.values():
print(host)

你需要提供一个配置文件,它将告诉Nornir框架如何连接你的网络设备。以下是一个示例配置文件:

inventory:
plugin:SimpleInventory
options:
host_file:"hosts.yaml"
group_file:"groups.yaml"

credentials:
napalm:
username:"admin"
password:"admin"

runner:
plugin:threaded
options:
num_workers:20

inventory 部分告诉Nornir如何读取你的主机清单和组清单。在这个例子中,我们使用了一个简单的清单插件,它使用一个YAML格式的文件来定义主机和组。

credentials 部分告诉Nornir如何连接到设备。在这个例子中,我们使用了napalm插件来连接设备,因此我们需要提供napalm插件需要的用户名和密码。

runner 部分告诉Nornir如何运行任务。在这个例子中,我们使用了一个线程插件来并行运行任务,并设置了20个工作线程。

例子

连接并获取设备信息

以下代码示例演示了如何使用Nornir连接设备并获取设备的信息:

fromnornirimportInitNornir
fromnornir.plugins.tasks.networkingimportnapalm_get

nr=InitNornir(config_file="config.yaml")

result=nr.run(task=napalm_get,getters=["interfaces","facts"])

forhost,rinresult.items():
print(f"Host:{host}")
print(f"Interfaces:{r[0].result['interfaces']}")
print(f"Facts:{r[1].result['facts']}")

在这个例子中,我们使用了napalm_get任务来获取设备的接口和基本信息。

Nornir支持异步任务执行,使用asyncio库实现。通过asyncio库,我们可以使用协程并发执行任务,提高执行效率。

下面是一个使用异步任务执行的示例代码:

importasyncio
fromnornirimportInitNornir


asyncdeftask1(task):
print(f"Task{task.task_id}starting")
awaitasyncio.sleep(2)
print(f"Task{task.task_id}ending")


asyncdefmain():
nr=InitNornir(config_file="config.yaml")
tasks=[task1forhostinnr.inventory.hosts.values()]
awaitasyncio.gather(*tasks)


if__name__=="__main__":
asyncio.run(main())

在上面的示例中,我们首先定义了一个异步任务task1,在任务中打印任务ID,然后等待2秒钟,最后再次打印任务ID。然后我们定义了一个主函数main,在函数中初始化Nornir,并使用异步任务执行多个task1任务。最后,在主程序中使用asyncio.run方法运行主函数。

在上面的代码中,我们使用asyncio.gather方法来并发执行所有任务。asyncio.gather方法接受多个协程作为参数,然后并发执行这些协程,并等待它们全部执行完成。

总结

本文介绍了Python Nornir框架的基本用法和示例代码,包括初始化Nornir、执行任务、使用组、使用过滤器、使用动态数据、使用自定义插件、使用SSH、Telnet、Netmiko等插件、使用异步执行任务等。通过本文的介绍,读者可以了解到如何使用Nornir框架进行自动化网络管理和配置,以及如何通过Nornir插件和自定义插件扩展框架的功能。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    1382

    浏览量

    60992
  • HTTP
    +关注

    关注

    0

    文章

    466

    浏览量

    30315
  • 自动化
    +关注

    关注

    28

    文章

    5037

    浏览量

    77731
  • 命令
    +关注

    关注

    5

    文章

    638

    浏览量

    21849
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83467

原文标题:网络工程师学Python-39-简化网络自动化任务编排框架Nornir

文章出处:【微信号:网络技术干货圈,微信公众号:网络技术干货圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OPhone自动化测试技术概述

    技术,自动化测试,应用程序,测试用例,测试框架,测试类型,测试程序,图像识别,界面,测试结果【DOI】:CNKI:SUN:ITSJ.0.2010-04-065【正文快照】:本文将对。phone平台
    发表于 05-06 08:58

    物联网怎么普及工业自动化

    工业自动化行业,说是一个新概念或技术不合适,事实上许多对象与子系统早期存在于一些工业应用程序,适用于网络是因为技术与产业发展到一定阶段和不可避免的结果。维视图像给您简单分享物联网是怎么普及工业自动化
    发表于 03-16 09:22

    正确理解ABBYY FineReader 12内置的自动化任务

    FineReader 12内置的自动化任务,这将可以一键执行所需操作,要处理布局复杂的文档,您可以自定义每个步骤,然后单独执行。ABBYY FineReader 12下载:wm.makeding.com
    发表于 09-20 11:03

    工业自动化网络规范:MODBUS应用协议

    基于MODBUS协议的工业自动化网络规范 第1部分:MODBUS应用协议
    发表于 08-01 10:47

    自动化行业中的全厂自动化中的以太网/IP

    、可见性和效率,采用开放式行业标准网络技术的单一系统架构显得至关重要。”EtherNet/IP是自动化的基础:一种同时面向车间和企业网络的应用层协议在2013年11月开展“移动性、以太网和无线
    发表于 10-22 16:45

    网络路由设备的测试自动化

    网络路由设备的测试自动化
    发表于 06-18 06:34

    自动化测试框架思想和构建

    自动化测试一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。本文介绍的是自动化测试框架思想与构建,一起来看。
    发表于 07-18 06:52

    请问数据驱动的自动化测试框架结构是怎么构成的?

    自动化测试为什么会出现?相比手工测试,自动化测试有哪些优势?自动化测试可以分为哪几个级别?进行自动化测试的软件需要满足哪几个条件?数据驱动的自动化
    发表于 04-15 06:55

    如何搭建嵌入式C语言单元测试自动化框架

    关于嵌入式C语言单元测试自动化框架的搭建思路
    发表于 12-15 07:35

    HarmonyOS自动化测试框架—Hypium

    ​​,点击链接查看更多技术内容。 应用开发过程中,要确保应用的功能和界面能满足预期,往往需要通过测试来验证。为此,我们研发了一套新的自动化测试框架,它支持以插件形式集成到DevEco Studio中
    发表于 08-10 17:13

    HamronyOS自动化测试框架使用指南

    概述 为支撑 HarmonyOS 操作系统的自动化测试活动开展,我们提供了支持 JS/TS 语言的单元及 UI 测试框架,支持开发者针对应用接口进行单元测试,并且可基于 UI 操作进行 UI 自动化
    发表于 12-19 10:26

    Force10推出开放式自动化框架方案

    Force10网络公司日前宣布推出其开放式自动化框架Open Automation Framework 2.0,该版本是对其原有开放式自动化框架
    发表于 05-28 08:42 797次阅读

    基于Web的自动化测试框架的研究

    根据web系统测试的特点,为提高软件测试自动化脚本的可重用性,结合在实际项目中软件自动化测试的实践,提出基于Web的自动化测试框架(ACRAT)。分析了软件
    发表于 11-07 15:58 0次下载
    基于Web的<b class='flag-5'>自动化</b>测试<b class='flag-5'>框架</b>的研究

    网络走向自动化的三大原因是什么?

    网络自动化是指一个网络中的物理和虚拟设备的自动配置、管理、测试、部署和操作的过程。在该技术加持下的网络,可每天
    发表于 08-09 14:56 3926次阅读

    什么是自动化测试框架

    自动化测试框架,即是应用于自动化测试所用的框架。按照框架的定义,自动化测试
    发表于 04-18 14:44 595次阅读