與名稱所指明的意思相反,snmp不僅僅是用於管理資料的協議。隨著時間的推移,它已經變得比最初的設計者們所計畫的要複雜得多。
網路管理領域中,每個元件都有自己特定的術語,因此,我們也將在這裡採用這些術語。有意思的是,「管理」這個詞被過度使用。
網路管理體系結構中有三個主要元件:管理實體、被管理實體和網路管理協議。
snmp由以下四部分組成:
smi引入了11種用於表示託管物件的基礎資料型別。
它們是純asn.1型別或者定製化型別。純asn.1型別有:
基於asn.1的snmp定製子型別:
pysnmp依賴pyasn.1來建立snmp的型別。在pyasn.1中,asn.1型別的例項由看起來像字串或整數的python物件表示。
我們可以將pyasn1物件與python型別相互轉換。pyasn1可以參與基本算術運算或字串連線等操作。所有snmp基礎型別都是不可變的,就像它們對應的python型別一樣。
>>> from pyasn1.type.univ import *
>>> integer(21) * 2
integer(42)
>>> integer(-1) + integer(1)
integer(0)
>>> int(integer(42))
42>>> octetstring('hello') + ', ' +
>>> octetstring(hexvalue='5079534e4d5021')
octetstring('hello, pysnmp!')
在向pysnmp發資料或從pysnmp接收資料時,pysnmp的使用者可能會遇到pyasn1類和物件。
稍後我們將更詳細地討論object indentifier這一資料型別,它用於命名乙個物件。在本系統中,物件以分層分層分層的方式進行identified。
oids被廣泛地應用來identifying標識物件。這個標識系統可以描述為一棵樹,其節點由不同的組織、知識領域、物件的概念或型別、物件具體的例項 來分配。以開發人員的角度看,oid是一長串由點分割的數字,來編碼對應的節點。
樹的每個分支都有乙個數字和名稱,從樹的頂部到你感興趣的點的完整路徑構成該點的名稱。這個完整的路徑就是oid,也叫identifier of an object。樹頂周圍的點具有普遍性。
頂級oids對應不同的標準組織。**商為自己的產品和託管物件定義私有分支。
在這個分層結構的頂端是國際標準化組織(iso)和國際電信標準化部門。
itu-t電信聯盟 是上面兩個組織共同努力的分支。
在pyasn1模型中,oid看起來像乙個不可變的數字序列。與python 元組一樣,pyasn1 oid可以被分割或連線。切割子串返回乙個sub-oid。
>>> from pyasn1.type.univ import *
>>> internetid = objectidentifier((1, 3, 6, 1))
>>> internetid
objectidentifier('1.3.6.1')
>>> internetid[2]
6>>> [ x for x in internetid ]
[1, 3, 6, 1]
>>> internetid + (2,)
objectidentifier('1.3.6.1.2')
>>> internetid[1:3]
objectidentifier('3.6')
>>> internetid[1] = 2
...typeerror: object does not support item assignment
可以將管理資訊庫(mib)視為相關託管物件集合的正式描述,這些物件的值共同反映了某個託管實體中某些子系統的當前狀態。
這些值可以通過向託管節點的**傳送snmp訊息,讓其執行,來查詢、修改,或者向管理實體報告。
比如,典型的物件,監控印表機上不同墨盒的狀態和可能列印檔案袋 數量,再如,交換機上進出的流量以及丟包率或者廣播包數量。
每個託管裝置都有乙個存放 mib中鍵對應值的資料庫,所以,可用資料實際上並不依賴資料庫,而是依賴於實現。重要的是,你得知道mib不包含實際資料,只是定義資料模式,有點像資料庫模式。
為了正確地組織mib模組和物件,所有產品的所有可管理特性都安排在這個mib樹的結構中。每個mib模組和物件都由乙個oid唯一標識。
snmp的管理實體和託管實體都可以使用mib資訊。
managed entity
pysnmp將asn.1 mib檔案轉換成python模組,然後snmp引擎在執行時按需載入這些模組。pysnmp mib 模組是通用的——相同的模組可以被管理實體和託管實體使用。
mib轉換由pysnmp自動執行,但是從技術上講,它是由pysnmp的兄弟專案pysmi來處理的。。但是,你也可以使用pysmi的mibdump.py工具手動執行上述轉換。
snmp是c/s模型的,管理和託實體元件都包含客戶端和伺服器元件。客戶端和伺服器都以name-value的形式交換資料。value是強型別的。
snmp協議的核心就是協調snmp所有元件工作的引擎啊!!!
協議定義了兩種操作模式:
協議攜帶了snmp訊息。除了用於協議操作的頭資訊外,管理資訊還通過所謂的協議資料單元pdu來傳輸。snmp定址中定義了其中pdu型別,它們在概念上不同,由管理實體或託管實體分別執行。
manager-to-manager
agent-to-manager
rfc3413定義了一些標準的snmp應用。
pysnmp嚴格遵循rfcs及其抽象服務介面 來實現這些標準應用程式(通過本機snmp api)。
這種方法的缺點是對於大多數snmp任務來說過於詳細和冗長。為了使snmp易於使用,pysnmp引入了高階snmp api——high-level snmp api.
PySNMP中文3 文件 SNMP的歷史
網路時代初期,網路還主要用於科學研究,人們對網路管理也知之甚少。當遇到網路問題,幾乎都是使用ping來尋找問題根源,用修改配置或重啟軟硬體的方式來解決問題。1980年,在網路管理工具未問世之前,arpanet網路的第一次重大崩潰引起了一場有趣的討論,在rfc 789中可以找到相關的內容。從字裡行間可...
PySNMP中文5 文件 PySNMP的架構
我們可以從snmp協議演進的角度來看待pysnmp的內部結構。snmp多年來一直在發展,從一種相對簡單的資料結構和檢索方法 snmpv1 v2c 一直發展到強大的開箱即用加密的可擴充套件和模組化框架 snmpv3 按照從最古老的snmp服務到最新的snmp服務的順序,以下是pysnmp api的不同...
jQuery文件分析4 文件處理
文件處理就是在dom元素中新增html內容 1 2 3 p prepend hello 增加所有的b元素到p前 4 p prependto foo 把p前置新增到id為 foo中。5 p after b 將p新增到b的後面6 p before hello 在所有p元素之前插入html7 p inse...