snmp代碼篇

相關連接:
Snmp學習筆記
使用snmp4j實現Snmp功能(一)
使用snmp4j實現Snmp功能(二)
使用snmp4j實現Snmp功能(三)html

SNMP是英文「Simple Network Management Protocol」的縮寫,中文意思是「簡單網絡管理協議」。SNMP是目前最經常使用的環境管理協議。SNMP被設計成與協議無關,因此它能夠在 IP,IPX,AppleTalk,OSI以及其餘用到的傳輸協議上被使用。SNMP是一系列協議組和規範,它們提供了一種從網絡上的設備中收集網絡管理 信息的方法。SNMP也爲設備向網絡管理工做站報告問題和錯誤提供了一種方法。
    目前,幾乎全部的網絡設備生產廠家都實現了對SNMP的支持。領導潮流的SNMP是一個從網絡上的設備收集管理信息的公用通訊協議。設備的管理者收集這些 信息並記錄在管理信息庫(MIB)中。這些信息報告設備的特性、數據吞吐量、通訊超載和錯誤等。MIB有公共的格式,因此來自多個廠商的SNMP管理工具 能夠收集MIB信息,在管理控制檯上呈現給系統管理員。
    SNMP提供了一種統一的、跨平臺的設備管理辦法。node

概念太抽象,先來看一個例子。
咱們來作一個最簡單的Snmp操做:獲取一臺機器的機器名,假設其IP是192.168.1.1。
    首先要給192.168.1.1安裝Snmp環境。Window組件的管理監視工具裏包含Snmp,只須要安裝一下就能夠了。Snmp默認的通訊端口是 161/162,有的系統須要手動設置,這個能夠經過建立篩選器列表來實現,具體怎麼設置網上不少,你們能夠去搜索一下。另外須要關閉 192.168.1.1的防火牆。數據庫

接下來須要一個可以進行Snmp通訊的工具,比較簡單的有snmputil,你們能夠去網上下載。
snmputil的命令規則是:
snmputil [get|getnext|walk] agent community oid [oid ...]
[get|getnext|walk]爲消息類型,咱們這次進行的操做是get
agent指Snmp代理即你想進行操做的網絡設備的ip或名稱,即192.168.1.1
community:分區域,即密碼,默認是public
oid:想要操做的MIB數據對象號,設備名稱對應的MIB對象號是.1.3.6.1.2.1.1.5.0瀏覽器

打開命令行窗口,進入snmputil所在路徑,鍵入
snmputil get 192.168.1.1 public .1.3.6.1.2.1.1.5.0
若是參數都正確,控制檯就會顯示出192.168.1.1的機器名。安全

不知道如今你們對snmp有沒有一個感性的認識,經過get、set這樣的操做,咱們就能夠讀取、控制網絡設備了。服務器

接下來學習一下和Snmp有關的基本概念吧網絡

代理和管理站的模型 工具

Snmp分2種角色:SNMP管理站(manager,咱們的本機127.0.0.1)和SNMP代理(agent,咱們操做的機器,好比 192.168.1.1)。代理是實際網絡設備中用來實現SNMP功能的部分。代理在UDP的161端口接收NMS的讀寫請求消息,管理站在UDP的 162端口接收代理的事件通告消息。因此,一旦獲取設備的訪問權限(community,默認爲public),就能夠訪問設備信息、改寫和配置設備參 數。因爲採用UDP協議,不須要在代理和管理站之間保持鏈接。 性能

SNMP的操做命令 學習

SNMP協議之因此易於使用,這是由於它對外提供了三種用於控制MIB對象的基本操做命令。它們是:Get、Set 和 Trap。

Get:管理站讀取代理者處對象的值。它是SNMP協議中使用率最高的一個命令,由於該命令是從網絡設備中得到管理信息的基本方式。

Set:管理站設置代理者處對象的值。它是一個特權命令,由於能夠經過它來改動設備的配置或控制設備的運轉狀態。它能夠設置設備的名稱,關掉一個端口或清除一個地址解析表中的項等。

Trap:代理者主動向管理站通報重要事件。它的功能就是在網絡管理系統沒有明確要求的前提下,由管理代理通知網絡管理系統有一些特別的狀況或問題 發生了。若是發生意外狀況,客戶會向服務器的162端口發送一個消息,告知服務器指定的變量值發生了變化。一般由服務器請求而得到的數據由服務器的161 端口接收。Trap 消息能夠用來通知管理站線路的故障、鏈接的終端和恢復、認證失敗等消息。管理站可相應的做出處理。

SNMP的命令和報文

SNMP協議定義了數據包的格式,及網絡管理員和管理代理之間的信息交換,它還控制着管理代理的MIB數據對象。所以,可用於處理管理代理定義的各類任務。
    一條SNMP報文由三個部分組成:版本域(version field),分區域(community field)和SNMP協議數據單元域(SNMP protocol data unit field),數據包的長度不是固定的。
    版本域:這個域用於說明如今使用的是哪一個版本的SNMP協議。目前,version 1是使用最普遍的SNMP協議。
    分區域:分區(community)是基本的安全機制,用於實現SNMP網絡管理員訪問SNMP管理代理時的身份驗證。相似於密碼,默認值爲 public。分區名(Community name)是管理代理的口令,管理員被容許訪問數據對象的前提就是網絡管理員知道網絡代理的口令。若是把配置管理代理成能夠執行Trap命令,當網絡管理 員用一個錯誤的分區名查詢管理代理時,系統就發送一個autenticationFailure trap報文。

PDU  : 協議數據單元。是SNMP消息中的數據區, 即Snmp通訊時報文數據的載體。

MIB  : 管理信息庫

管理信息數據庫(MIB)是一個信息存儲庫,它包含了管理代理中的有關配置和性能的數據,有一個組織體系和公共結構,其中包含分屬不一樣組的許多個數據對象。     MIB數據對象以一種樹狀分層結構進行組織,這個樹狀結構中的每一個分枝都有一個專用的名字和一個數字形式的標識符。結構樹的分枝實際表示的是數據對象的邏 輯分組。而樹葉,有時候也叫節點(node),表明了各個數據對象。在結構樹中使用子樹表示增長的中間分枝和增長的樹葉。     使用這個樹狀分層結構,MIB瀏覽器可以以一種方便並且簡潔的方式訪問整個MIB數據庫。MIB瀏覽器是這樣一種工具,它能夠遍歷整棵MIB結構樹,一般 以圖形顯示的形式來表示各個分枝和樹葉對象。能夠經過其數字標識符來查找MIB中的數據對象,這個數字標識符號從結構樹的頂部(或根部)開始,直到各個葉 子節點(即數據對象)爲止。這種訪問方式和文件系統的組織方式一致。二者的主要區別在於文件系統中的路徑名能夠以絕對也能夠以相對方式表示,而MIB數據 對象只能以絕對方式表示,不能使用相對方式。    每個節點都有一個對象標識符(OID)來惟一的標識,每一個節點用數字和字符兩種方式顯示,其中對象標識符OID是由句點隔開的一組整數,也就是從根節點 通向它的路徑。一個帶標號節點能夠擁有包含其它帶標號節點爲它的子樹,若是沒有子樹它就是葉子節點,它包含一個值並被稱爲對象。好比網絡設備名的oid 是.1.3.6.1.2.1.1.5.0,其值爲設備名稱的字符串。    網絡資源被抽象爲對象進行管理。但SNMP中的對象是表示被管資源某一方面的數據變量。對象被標準化爲跨系統的類,對象的集合被組織爲管理信息庫 (MIB)。MIB做爲設在代理者處的管理站訪問點的集合,管理站經過讀取MIB中對象的值來進行網絡監控。管理站能夠在代理者處產生動做,也能夠經過修 改變量值改變代理者處的配置。

相關文章
相關標籤/搜索