0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

簡化網(wǎng)絡(luò)自動化任務(wù)編排框架Nornir的用法

網(wǎng)絡(luò)技術(shù)干貨圈 ? 來源:網(wǎng)絡(luò)技術(shù)干貨圈 ? 2023-05-04 14:25 ? 次閱讀

Nornir是一個基于Python的自動化編排框架,旨在簡化網(wǎng)絡(luò)自動化的任務(wù)。它提供了一些基本的操作,例如SSH,Telnet,HTTP,以及很多網(wǎng)絡(luò)設(shè)備的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框架如何連接你的網(wǎng)絡(luò)設(shè)備。以下是一個示例配置文件:

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如何連接到設(shè)備。在這個例子中,我們使用了napalm插件來連接設(shè)備,因此我們需要提供napalm插件需要的用戶名和密碼。

runner 部分告訴Nornir如何運行任務(wù)。在這個例子中,我們使用了一個線程插件來并行運行任務(wù),并設(shè)置了20個工作線程。

例子

連接并獲取設(shè)備信息

以下代碼示例演示了如何使用Nornir連接設(shè)備并獲取設(shè)備的信息:

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任務(wù)來獲取設(shè)備的接口和基本信息。

Nornir支持異步任務(wù)執(zhí)行,使用asyncio庫實現(xiàn)。通過asyncio庫,我們可以使用協(xié)程并發(fā)執(zhí)行任務(wù),提高執(zhí)行效率。

下面是一個使用異步任務(wù)執(zhí)行的示例代碼:

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())

在上面的示例中,我們首先定義了一個異步任務(wù)task1,在任務(wù)中打印任務(wù)ID,然后等待2秒鐘,最后再次打印任務(wù)ID。然后我們定義了一個主函數(shù)main,在函數(shù)中初始化Nornir,并使用異步任務(wù)執(zhí)行多個task1任務(wù)。最后,在主程序中使用asyncio.run方法運行主函數(shù)。

在上面的代碼中,我們使用asyncio.gather方法來并發(fā)執(zhí)行所有任務(wù)。asyncio.gather方法接受多個協(xié)程作為參數(shù),然后并發(fā)執(zhí)行這些協(xié)程,并等待它們?nèi)繄?zhí)行完成。

總結(jié)

本文介紹了Python Nornir框架的基本用法和示例代碼,包括初始化Nornir、執(zhí)行任務(wù)、使用組、使用過濾器、使用動態(tài)數(shù)據(jù)、使用自定義插件、使用SSH、Telnet、Netmiko等插件、使用異步執(zhí)行任務(wù)等。通過本文的介紹,讀者可以了解到如何使用Nornir框架進行自動化網(wǎng)絡(luò)管理和配置,以及如何通過Nornir插件和自定義插件擴展框架的功能。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1463

    瀏覽量

    61670
  • HTTP
    +關(guān)注

    關(guān)注

    0

    文章

    495

    瀏覽量

    30892
  • 自動化
    +關(guān)注

    關(guān)注

    28

    文章

    5431

    瀏覽量

    78893
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    663

    瀏覽量

    21956
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4756

    瀏覽量

    84283

原文標題:網(wǎng)絡(luò)工程師學Python-39-簡化網(wǎng)絡(luò)自動化任務(wù)編排框架Nornir

文章出處:【微信號:網(wǎng)絡(luò)技術(shù)干貨圈,微信公眾號:網(wǎng)絡(luò)技術(shù)干貨圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    網(wǎng)絡(luò)路由設(shè)備的測試自動化

    網(wǎng)絡(luò)路由設(shè)備的測試自動化
    發(fā)表于 06-18 06:34

    自動化測試框架思想和構(gòu)建

    自動化測試一般是指軟件測試的自動化,軟件測試就是在預設(shè)條件下運行系統(tǒng)或應(yīng)用程序,評估運行結(jié)果,預先條件應(yīng)包括正常條件和異常條件。本文介紹的是自動化測試框架思想與構(gòu)建,一起來看。
    發(fā)表于 07-18 06:52

    請問數(shù)據(jù)驅(qū)動的自動化測試框架結(jié)構(gòu)是怎么構(gòu)成的?

    自動化測試為什么會出現(xiàn)?相比手工測試,自動化測試有哪些優(yōu)勢?自動化測試可以分為哪幾個級別?進行自動化測試的軟件需要滿足哪幾個條件?數(shù)據(jù)驅(qū)動的自動化
    發(fā)表于 04-15 06:55

    HarmonyOS自動化測試框架—Hypium

    ??,點擊鏈接查看更多技術(shù)內(nèi)容。 應(yīng)用開發(fā)過程中,要確保應(yīng)用的功能和界面能滿足預期,往往需要通過測試來驗證。為此,我們研發(fā)了一套新的自動化測試框架,它支持以插件形式集成到DevEco Studio中
    發(fā)表于 08-10 17:13

    常用軟件測試自動化框架

    自動化測試框架無疑是企業(yè)實施自動化測試的一個必然的發(fā)展方向,它對于產(chǎn)生成功的測試自動化的適當基礎(chǔ)是重要的。
    發(fā)表于 04-21 11:39 ?4994次閱讀

    Force10推出開放式自動化框架方案

    Force10網(wǎng)絡(luò)公司日前宣布推出其開放式自動化框架Open Automation Framework 2.0,該版本是對其原有開放式自動化框架
    發(fā)表于 05-28 08:42 ?874次閱讀

    全面提升自動化測試,NI TestStand 2012新模塊框架

    NI TestStand 2012采用全新的模塊框架,能夠簡化自動化測試的開發(fā)和報告生成。
    發(fā)表于 11-06 17:42 ?1751次閱讀

    基于Web的自動化測試框架的研究

    根據(jù)web系統(tǒng)測試的特點,為提高軟件測試自動化腳本的可重用性,結(jié)合在實際項目中軟件自動化測試的實踐,提出基于Web的自動化測試框架(ACRAT)。分析了軟件
    發(fā)表于 11-07 15:58 ?0次下載
    基于Web的<b class='flag-5'>自動化</b>測試<b class='flag-5'>框架</b>的研究

    網(wǎng)絡(luò)走向自動化的三大原因是什么?

    網(wǎng)絡(luò)自動化是指一個網(wǎng)絡(luò)中的物理和虛擬設(shè)備的自動配置、管理、測試、部署和操作的過程。在該技術(shù)加持下的網(wǎng)絡(luò),可每天
    發(fā)表于 08-09 14:56 ?4047次閱讀

    什么是自動化測試框架?

    這些優(yōu)勢可以是不同的形式,如易于編寫腳本、可伸縮性、模塊、可理解性、過程定義、可重用性、成本、維護等。因此,為了能夠獲得這些好處,建議開發(fā)人員使用一個或多個自動化測試框架。此外,當有一群開發(fā)人員在
    的頭像 發(fā)表于 11-03 10:33 ?4248次閱讀

    常規(guī)自動化程序框架結(jié)構(gòu)

    常規(guī)自動化程序框架結(jié)構(gòu),方便程序編寫提高工程效率。
    發(fā)表于 02-22 14:30 ?36次下載

    自動化測試框架unittes詳解

    的測試框架,不妨“軟為硬用”。這里就基于python的自動化測試框架unittest來實現(xiàn)一個簡單的自動化上板測試流程,同時自動生成html
    的頭像 發(fā)表于 05-20 14:47 ?2836次閱讀

    什么是自動化測試框架

    自動化測試框架,即是應(yīng)用于自動化測試所用的框架。按照框架的定義,自動化測試
    發(fā)表于 04-18 14:44 ?833次閱讀

    Facebook群組自動化python – 網(wǎng)絡(luò)自動化

    電子發(fā)燒友網(wǎng)站提供《Facebook群組自動化python – 網(wǎng)絡(luò)自動化.zip》資料免費下載
    發(fā)表于 07-05 14:26 ?0次下載
    Facebook群組<b class='flag-5'>自動化</b>python – <b class='flag-5'>網(wǎng)絡(luò)</b><b class='flag-5'>自動化</b>

    操作簡單:自動化簡化SAN配置

    電子發(fā)燒友網(wǎng)站提供《操作簡單:自動化簡化SAN配置.pdf》資料免費下載
    發(fā)表于 08-29 09:44 ?0次下載
    操作簡單:<b class='flag-5'>自動化</b>和<b class='flag-5'>簡化</b>SAN配置