• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Pysnmp的局域網(wǎng)自動化網(wǎng)管的研究

      2021-04-22 05:40:02秦子實
      電腦知識與技術(shù) 2021年8期

      秦子實

      摘要:隨著企業(yè)內(nèi)網(wǎng)規(guī)模的擴大,內(nèi)網(wǎng)接入終端逐漸增多,終端接入控制業(yè)務(wù)也越發(fā)繁雜,導(dǎo)致企業(yè)信息部門的日常業(yè)務(wù)存在大量重復(fù)性工作,且效率較低易出錯。因此,企業(yè)信息部門需要一種簡單的自動化網(wǎng)管方法,能夠代替人工自動管理IP、MAC資源等網(wǎng)絡(luò)資源,并能夠進(jìn)行端口MAC綁定等準(zhǔn)入業(yè)務(wù)。本文設(shè)計并實現(xiàn)了一種基于Pysnmp的交換設(shè)備管理方法,通過SNMP協(xié)議讀取、設(shè)置交換機配置,以達(dá)到自動化管理交換設(shè)備的目的。該方法具有依賴庫少、代碼編寫簡單、執(zhí)行效率高等特點,適合局域網(wǎng)客制化開發(fā)與部署。

      關(guān)鍵詞:網(wǎng)絡(luò)運維;SNMP;Python

      中圖分類號:TP393? ? ? 文獻(xiàn)標(biāo)識碼:A

      文章編號:1009-3044(2021)08-0047-02

      1 概述

      在企業(yè)內(nèi)部辦公局域網(wǎng),尤其是物理隔離的內(nèi)網(wǎng)中,通常需要信息部門進(jìn)行終端準(zhǔn)入,以保護內(nèi)網(wǎng)信息安全。隨著內(nèi)網(wǎng)規(guī)模的擴大,終端接入準(zhǔn)入、接入點變更、設(shè)備變更、設(shè)備注銷等業(yè)務(wù)也大量增加,此類業(yè)務(wù)具有工作量大、重復(fù)性高、人工易出錯且步驟固定等特點,適合通過腳本自動化管理。由于企業(yè)內(nèi)網(wǎng)較為封閉的特點,自動化腳本不應(yīng)有較多的庫依賴關(guān)系,同時應(yīng)該方便信息部門開發(fā)部署。此外,對于大型辦公內(nèi)網(wǎng),腳本應(yīng)該具有較高的執(zhí)行效率。本文針對該場景,基于Pysnmp設(shè)計了一種易于開發(fā)方便部署的方法。

      2 Pysnmp安裝

      Pysnmp的依賴庫僅有四個,依賴關(guān)系如下圖1所示。

      這四個依賴庫為純Python庫,沒有平臺編譯依賴,可以直接使用pypi上提供的wheel文件安裝,下載完成后在內(nèi)網(wǎng)環(huán)境按照ply、jinja2、pysmi、pyasn1、pysnmp的順序安裝即可:

      或使用github上提供的源碼,按照ply、jinja2、pysmi、pyasn1、pysnmp的順序,通過在源碼根目錄中運行“python setup.py”,從源碼安裝依賴。

      3 系統(tǒng)設(shè)計

      3.1 獲取數(shù)據(jù)

      對于企業(yè)內(nèi)網(wǎng)站準(zhǔn)入業(yè)務(wù)而言,準(zhǔn)入控制僅需要網(wǎng)關(guān)交換機中的ARP數(shù)據(jù),即IP到MAC的映射關(guān)系。批量獲取此類數(shù)據(jù)需要使用“nextCmd”函數(shù):其中在第二個參數(shù)使用“CommunityData”對象生成團體字,在第三個參數(shù)使用“UdpTransportTarget”生成目標(biāo)對象指定交換機snmp的IP與端口:

      nextCmd函數(shù)返回一個生成器對象,可以直接使用for循環(huán)遍歷:

      3.2 異常數(shù)據(jù)

      for循環(huán)中的四個參數(shù)在循環(huán)體中分別用于:

      snmp引擎(SnmpEngine)出現(xiàn)異常時,errorIndication不為空,可以用于拋出異常或記錄交換設(shè)備級的錯誤日志;

      snmp代理(snmpAgent)產(chǎn)生異常數(shù)據(jù)時,errorStatus不為空且errorIndex有用于指定錯誤所在的索引值,可以用于拋出異?;蛴涗浗粨Q機上報的異常數(shù)據(jù)。

      若前三個變量均為空,則可以通過varBinds取回正常數(shù)據(jù),異常處理通常編寫如下:

      3.3 ARP數(shù)據(jù)處理

      在交換機返回的SNMP數(shù)據(jù)中,IP-MAC映射數(shù)據(jù)的oid為“.1.3.6.1.2.1.3.1.1.2”(即“獲取數(shù)據(jù)”例子中一節(jié)“ObjectIdentity”中的參數(shù))。在請求該oid數(shù)據(jù)后,會返回從該oid開始的UDP中的原始結(jié)果,每個條目包含一個ObjectType對象表示oid名稱,以及一個OctetString對象表示oid下的值。原始數(shù)據(jù)包含非utf-8編碼和十六進(jìn)制數(shù)據(jù),不方便直接處理,因此可以使用這兩個對象的“prettyPrint”輸出方便處理的信息。

      使用nextCmd函數(shù)讀取該oid數(shù)據(jù)時,對應(yīng)調(diào)用的snmp“GETBULK”命令,即批量獲取“下一個指定oid相關(guān)”數(shù)據(jù),返回的數(shù)據(jù)有順序。由于nextCmd返回從指定的oid開始的所有oid數(shù)據(jù),本文利用數(shù)據(jù)的排序特征,僅獲取.1.3.6.1.2.1.3.1.1.2集合中的數(shù)據(jù),當(dāng)snmp代理接收到第一條不屬于.1.3.6.1.2.1.3.1.1.2的數(shù)據(jù)時,立即停止接收,此舉能夠大幅縮短數(shù)據(jù)讀取時間(經(jīng)測試在華為5700系列交換機上,接收IP-MAC映射數(shù)據(jù)僅耗時約1秒,而接收所有數(shù)據(jù)將耗時數(shù)十秒)。接收varBinds并判斷oid是否結(jié)束的示例寫法:

      經(jīng)過這一步處理,即可獲取IP-MAC映射列表,本文以列表形式輸出為例,此外也可以通過字典形式輸出,可以用于數(shù)據(jù)去重:

      可以看出,每條數(shù)據(jù)的第一個元素為mib字符串,可以很容易地將IP數(shù)據(jù)分離出來,第二個成員即為MAC數(shù)據(jù)。這樣一來,可以得到IP-MAC數(shù)據(jù)的關(guān)系,進(jìn)而通過dict或set等數(shù)據(jù)結(jié)構(gòu)進(jìn)行去重,將多個網(wǎng)關(guān)的ARP信息進(jìn)行整合,即可得到局域網(wǎng)的整體ARP信息。

      3.4 異步I/O加速

      在交換機較多的場景中,若順序執(zhí)行上述步驟,依次從每個交換機中獲取數(shù)據(jù),可能會需要較長時間。Pysnmp還提供了異步I/O版本的UdpTransportTarget:

      只需要將nextCmd中的第二個參數(shù)替換為這個asyncio版本的即可,之后就可以使用async/await聲明函數(shù),并使用Python異步框架asyncio中的各種調(diào)度器異步執(zhí)行了。經(jīng)測試,使用同步函數(shù)獲取1臺交換機的ARP數(shù)據(jù)約耗時1秒,使用同步函數(shù)順序獲取10臺交換機數(shù)據(jù)越需要15秒,同步函數(shù)的耗時正比于交換機數(shù)量;而換用異步函數(shù)獲取10臺交換機約需要2秒,而交換機繼續(xù)增多的情況下,耗時也并未顯著增加。

      4 結(jié)束語

      本文介紹了使用Pysnmp獲取交換機IP-MAC映射數(shù)據(jù)的方法,可以方便地實現(xiàn)自動化準(zhǔn)入管理。該方法依賴庫少,便于內(nèi)網(wǎng)部署,對于交換機數(shù)量較多的大型局域網(wǎng),可以使用異步I/O版本的函數(shù),可以較大幅度地縮短函數(shù)的等待時間,是一種方便部署、性能優(yōu)良的網(wǎng)絡(luò)管理方法。

      【通聯(lián)編輯:梁書】

      临汾市| 化州市| 龙川县| 报价| 清原| 德惠市| 太仆寺旗| 东丰县| 兴海县| 会泽县| 敦煌市| 许昌县| 五华县| 乌兰县| 施甸县| 瑞丽市| 鱼台县| 泾阳县| 南溪县| 虞城县| 张家界市| 鹤壁市| 鄄城县| 施甸县| 牡丹江市| 鲜城| 苍南县| 青海省| 金溪县| 昔阳县| 襄樊市| 郯城县| 平南县| 区。| 乌兰察布市| 汾西县| 林芝县| 论坛| 航空| 育儿| 望谟县|