2014-11-22 95 views
0

我對SNMP協議相當陌生,最近纔在我的計算機網絡課程中介紹過它。用PySNMP抓取MIB問題

我明白經理如何發送Get,Set,GetNext,GetBulk等等,它會捕獲Traps等。我不完全理解的一點是MIB從我所收集的信息中找出代理上的MIB,然後Manager將查詢MIB樹。這很好,儘管Manager需要OID才能正確查詢。我有一個問題,如果這些是硬編碼或不。 OID是否在經理中硬編碼?

除此之外,我不知道如何構建MIB文件,顯然有一些特殊的文件類型定義MIB結構,我真的不知道如何使用pySNMP來構建它。我覺得我會在啓動時在代理端運行它

有人可以幫我解決這些概念問題嗎?

回答

0

經理需要知道變量以查詢特定的事情。變量可以通過OID或MIB對象名稱來標識。

MIB的給經理的信息,例如:與

  • 值的類型與特定的OID相關的OID的相關

    • 對人友好的象徵性名字的變量的訪問權限
    • 提示由代理
    • 實施
    • SNMP表索引結構和類型
    • 對其他MIB對象的引用(例如通知)

    如果MIB可用,Manager將能夠執行任何SNMP操作,以瞭解它感興趣的代理變量的符號名稱或OID。所有必需的詳細信息都將從MIB中收集。

    如果MIB不可用,Manager仍然需要計算出更多或更少的附加細節(以上列出了一些細節),以便可以將這些細節硬編碼到Manager中。

    例如,GET操作可以只執行一個OID,但是如果沒有MIB管理器可能有麻煩使響應值看起來很友善。

    另一個例子是SET操作,它要求Manager正確編碼值 - 它的類型可以動態查找MIB或硬編碼到Manager的特定OID。

    更復雜的場景涉及使用由MIB正式定義的索引結構動態構建OID(用於處理SNMP表項)。

    GETNEXT/GETBULK查詢的目的是讓Manager不知道代理提供的OID的確切集合。所以Manager可以從一個衆所周知的OID(甚至是它的前綴)開始迭代Agent的變量。此功能的一個用途是SNMP表檢索。

    MIB以ASN.1語言的子集編寫。與ASN.1不同,MIB對於SNMP域非常具體。

    要使用帶有pysnmp的MIB,您需要通過ASN。1 MIB到build-pysnmp-mib shell腳本(來自pysnmp發行版),它將調用smidump和其他工具將ASN.1 MIB轉換爲表示支持pysnmp的MIB對象的Python類集合。