snmp命令
Snmputil 命令
Snmputil是一個命令行下的軟件,使用語法如下: usage: snmputil get|getnext|walk] agent community oid [oid ...] snmputil trap
其中agent表示代理進程的IP地址,community表示團體名,oid表示MIB對象ID。
舉例說明:
1)查看本地計算機(IP地址為192.168.0.3)的系統信息
通過對系統組的MIB對象的查閱,我們知道系統信息所對應的MIB對象為.1.3.6.1.2.1.1.1(參看系統組對象),我們使用get參數來查詢:
C:>snmputil get 192.168.0.3 public .1.3.6.1.2.1.1.1.0
Variable = system.sysDescr.0
Value = String Hardware: x86 Family 15 Model 2 Stepping 7 AT/AT COMPATIBLE -
Software: Windows 2000 Version 5.1 (Build 2600 Uniprocessor Free)
其中public是192.168.0.3計算機上的團體名,.1.3.6.1.2.1.1.1.0是對象實例,注意對象ID前面要加一個點".",后面還要加一個"0"。如果不在對象ID末尾加上一個0,那么用get參數查詢就會出錯。從查詢結果中我們能夠看出操作系統版本和CPU類型。
2)查詢計算機連續開機多長時間
C:>snmputil get 192.168.0.3 public .1.3.6.1.2.1.1.3.0
Variable = system.sysUpTime.0
Value = TimeTicks 447614
如果我們在對象ID后面不加0,使用getnext參數能得到同樣的效果:
C:>snmputil getnext 192.168.0.3 public .1.3.6.1.2.1.1.3
Variable = system.sysUpTime.0
Value = TimeTicks 476123
3)查詢計算機的聯系人
C:>snmputil get 192.168.0.3 public .1.3.6.1.2.1.1.4.0
Variable = system.sysContact.0
Value = String administrator
以上簡單介紹了用snmputil查詢代理進程的方法,由於在命令行下使用,可能大家感到頗為不方便,但命令行的一個好處就是可以促進大家主動查閱MIB對象,加深對SNMP網絡管理的認識。
4)使用walk查詢設備上所有正在運行的進程:
C:>snmputil walk 192.168.0.3 public .1.3.6.1.2.1.25.4.2.1.2
Variable = host.hrSWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.1
Value = String System Idle Process
Variable = host.hrSWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.4
Value = String System
Variable = host.hrSWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.292
Value = String snmputil.exe
Variable = host.hr
SWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.308
Value = String RavTimer.exe
Variable = host.hrSWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.336
Value = String RavMon.exe
限於篇幅筆者就不把所有進程列出來,大家可以在自己的計算機上面實驗,以加強感性認識。
5)查詢計算機上面的用戶列表
C:>snmputil walk 192.168.0.3 public .1.3.6.1.4.1.77.1.2.25.1.1
Variable = .iso.org.dod.internet.private.enterprises. lanmanager.lanmgr-2.server.
svUserTable.svUserEntry.svUserName.4.117.115.101.114
Value = String user
Variable = .iso.org.dod.internet.private.enterprises. lanmanager.lanmgr-2.server.
svUserTable.svUserEntry.svUserName.5.71.117.101.115.116
Value = String Guest
Variable = .iso.org.dod.internet.private.enterprises. lanmanager.lanmgr-2.server.svUserTable.svUserEntry. svUserName.13.65.100.109.105.110. 105.115.116.114.97.116.111.114
Value = String Administrator
從中我們可以得知該計算機共有三個用戶,它們分別為user、guest和administrator。
Snmputil還有一個trap的參數,主要用來陷阱捕捉,它可以接受代理進程上主動發來的信息。如果我們在命令行下面輸入snmputil trap后回車,然后用錯誤的團體名來訪問代理進程,這時候就能收到代理進程主動發回的報告。
在MIBII中總共有175個對象,每個對象均有其不同的含義,我們只有通過查閱MIB才能知道它們各自的作用。MIB對象是SNMP網絡管理中的核心內容,只有深入了解MIB對象的含義我們才有可能知道如何去駕馭SNMP網絡管理。
SNMP中MIB
1. SNMP基本原理
SNMP采用了Client/Server模型的特殊形式:代理/管理站模型。對網絡的管理與維護是通過管理工作站與SNMP代理間的交互工作完成的。每個SNMP從代理負責回答SNMP管理工作站(主代理)關於MIB定義信息的各種查詢。下圖10是NMS公司網絡產品中SNMP協議的實現模型。
mib0
SNMP代理和管理站通過SNMP協議中的標准消息進行通信,每個消息都是一個單獨的數據報。SNMP使用UDP(用戶數據報協議)作為第四層協議(傳輸協議),進行無連接操作。SNMP消息報文包含兩個部分:SNMP報頭和協議數據單元PDU。數據報結構如下圖
mib1
版本識別符(version identifier):確保SNMP代理使用相同的協議,每個SNMP代理都直接拋棄與自己協議版本不同的數據報。
團體名(Community Name):用於SNMP從代理對SNMP管理站進行認證;如果網絡配置成要求驗證時,SNMP從代理將對團體名和管理站的IP地址進行認證,如果失敗,SNMP從代理將向管理站發送一個認證失敗的Trap消息
協議數據單元(PDU):其中PDU指明了SNMP的消息類型及其相關參數。
2. 管理信息庫MIB
IETF規定的管理信息庫MIB(由中定義了可訪問的網絡設備及其屬性,由對象識別符(OID:Object Identifier)唯一指定。MIB是一個樹形結構,SNMP協議消息通過遍歷MIB樹形目錄中的節點來訪問網絡中的設備。
下圖給出了NMS系統中SNMP可訪問網絡設備的對象識別樹(OID:Object Identifier)結構。
mib2
下圖給出了對一個DS1線路狀態進行查詢的OID設置例子。
mib3
3. SNMP的五種消息類型
SNMP中定義了五種消息類型:Get-Request、Get-Response、Get-Next-Request、Set-Request、Trap
* Get-Request 、Get-Next-Request與Get-Response
SNMP管理站用Get-Request消息從擁有SNMP代理的網絡設備中檢索信息,而SNMP代理則用Get-Response消息響應。Get- Next-Request用於和Get-Request組合起來查詢特定的表對象中的列元素。如:首先通過下面的原語獲得所要查詢的設備的接口數:
{iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifNumber(2)}
后再通過下面的原語,進行查詢(其中第一次用Get-Request,其后用Get-Next-Request):
{iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifTable(2)}
* Set-Request
SNMP管理站用Set-Request 可以對網絡設備進行遠程配置(包括設備名、設備屬性、刪除設備或使某一個設備屬性有效/無效等)。
* Trap
SNMP代理使用Trap向SNMP管理站發送非請求消息,一般用於描述某一事件的發生。
SNMP管理信息庫MIB
管理信息庫MIB指明了網絡元素所維持的變量(即能夠被管理進程查詢和設置的信息)。MIB給出了一個網絡中所有可能的被管理對象的集合的數據結構。SNMP的管理信息庫采用和域名系統DNS相似的樹型結構,它的根在最上面,根沒有名字。下圖畫的是管理信息庫的一部分,它又稱為對象命名(objectnamingtree)。
mib4
管理信息庫的對象命名舉例
對象命名樹的頂級對象有三個,即ISO、ITU-T和這兩個組織的聯合體。在ISO的下面有4個結點,其中的餓一個(標號3)是被標識的組織。在其下面有一個美國國防部(Department of Defense)的子樹(標號是6),再下面就是Internet(標號是1)。在只討論Internet中的對象時,可只畫出Internet以下的子樹(圖中帶陰影的虛線方框),並在Internet結點旁邊標注上{1.3.6.1}即可。在Internet結點下面的第二個結點是mgmt(管理),標號是2。再下面是管理信息庫,原先的結點名是mib。1991年定義了新的版本MIB- II,故結點名現改為mib-2,其標識為{1.3.6.1.2.1},或{Internet(1) .2.1}。這種標識為對象標識符。
最初的結點mib將其所管理的信息分為8個類別,見表1。現在de mib-2所包含的信息類別已超過40個。
表1 最初的結點mib管理的信息類別
類別
標號
所包含的信息
system
interfaces
address translation
ip
icmp
tcp
udp
egp
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
主機或路由器的操作系統
各種網絡接口及它們的測定通信量
地址轉換(例如ARP映射)
Internet軟件(IP分組統計)
ICMP軟件(已收到ICMP消息的統計)
TCP軟件(算法、參數和統計)
UDP軟件(UDP通信量統計)
EGP軟件(外部網關協議通信量統計)
應當指出,MIB的定義與具體的網絡管理協議無關,這對於廠商和用戶都有利。廠商可以在產品(如路由器)中包含SNMP代理軟件,並保證在定義新的MIB項目后該軟件仍遵守標准。用戶可以使用同一網絡管理客戶軟件來管理具有不同版本的MIB的多個路由器。當然,一個沒有新的MIB項目的路由器不能提供這些項目的信息。
這里要提一下MIB中的對象{1.3.6.1.4.1},即enterprises(企業),其所屬結點數已超過3000。例如IBM為 11.3.6.1.4.1.2},Cisco為{1.3.6.1.4.1.9},Novell為{1.3.6.1.4.1.23}等。世界上任何一個公司、學校只要用電子郵件發往iana-mib@isi.edu進行申請即可獲得一個結點名。這樣各廠家就可以定義自己的產品的被管理對象名,使它能用 SNMP進行管理。
SNMP 命令行接口的語法和常用參數
WebLogic SNMP 代理命令的形式如下所示:
java command-name arguments
表 5-1 描述大多數 WebLogic SNMP 代理命令常用的參數。
表 5-1 常用命令行參數
參數
定義
-d
在命令輸出中包括調試信息和數據包轉儲。
-v {v1 | v2}
指定是否使用 SNMPv1 或 SNMPv2 與 SNMP 代理進行通信。
當配置 SNMP 代理時,指定的 SNMP 版本必須和在“陷阱版本”字段中設置的 SNMP 版本相同(如“管理控制台聯機幫助”中的配置 SNMP 代理所述)
如果不指定值,該命令將假定 -v v1。
-c snmpCommunity
[@server_name | @domain_name
為 WebLogic SNMP 代理設置的社區名稱,並可選擇指定用於承載您要交互的對象的服務器實例。
要請求管理服務器上的受管對象,請指定:
snmpCommunity
其中,snmpCommunity為當配置 SNMP 代理時在“社區前綴”字段中設置的 SNMP 社區名稱(如“管理控制台聯機幫助”中的配置 SNMP 代理所述)。
要請求單個受管服務器上的受管對象,請指定:
snmpCommunity@server_name
其中,server_name為受管服務器的名稱。
要為域中的所有服務器實例請求受管對象,請按下列形式指定社區字符串:
snmpCommunity@domain_name
其中,domain_name為 WebLogic Server 域的名稱。
如果不為此參數指定值,那么命令假定
-c public,從而使用默認社區名稱,並假定指定的受管對象在管理服務器上。
-p snmpPort
WebLogic SNMP 代理監聽請求的端口號。
如果不指定值,該命令將假定 -p 161。
-t timeout
命令等待成功連接到 SNMP 代理的毫秒數。
如果不指定值,該命令將假定 -t 5000。
-r retries
命令重新嘗試連接到 SNMP 代理的失敗次數。
如果不指定值,命令在首次嘗試失敗時就退出。
host
承載 WebLogic Server 管理服務器的計算機的 DNS 名稱或 IP 地址,WebLogic SNMP 代理在此 WebLogic Server 管理服務器上運行。
http://www.oraclefmw.com/wls92/admin_ref/snmpcli.html
Snmputil是一個命令行下的軟件,使用語法如下: usage: snmputil get|getnext|walk] agent community oid [oid ...] snmputil trap
其中agent表示代理進程的IP地址,community表示團體名,oid表示MIB對象ID。
舉例說明:
1)查看本地計算機(IP地址為192.168.0.3)的系統信息
通過對系統組的MIB對象的查閱,我們知道系統信息所對應的MIB對象為.1.3.6.1.2.1.1.1(參看系統組對象),我們使用get參數來查詢:
C:>snmputil get 192.168.0.3 public .1.3.6.1.2.1.1.1.0
Variable = system.sysDescr.0
Value = String Hardware: x86 Family 15 Model 2 Stepping 7 AT/AT COMPATIBLE -
Software: Windows 2000 Version 5.1 (Build 2600 Uniprocessor Free)
其中public是192.168.0.3計算機上的團體名,.1.3.6.1.2.1.1.1.0是對象實例,注意對象ID前面要加一個點".",后面還要加一個"0"。如果不在對象ID末尾加上一個0,那么用get參數查詢就會出錯。從查詢結果中我們能夠看出操作系統版本和CPU類型。
2)查詢計算機連續開機多長時間
C:>snmputil get 192.168.0.3 public .1.3.6.1.2.1.1.3.0
Variable = system.sysUpTime.0
Value = TimeTicks 447614
如果我們在對象ID后面不加0,使用getnext參數能得到同樣的效果:
C:>snmputil getnext 192.168.0.3 public .1.3.6.1.2.1.1.3
Variable = system.sysUpTime.0
Value = TimeTicks 476123
3)查詢計算機的聯系人
C:>snmputil get 192.168.0.3 public .1.3.6.1.2.1.1.4.0
Variable = system.sysContact.0
Value = String administrator
以上簡單介紹了用snmputil查詢代理進程的方法,由於在命令行下使用,可能大家感到頗為不方便,但命令行的一個好處就是可以促進大家主動查閱MIB對象,加深對SNMP網絡管理的認識。
4)使用walk查詢設備上所有正在運行的進程:
C:>snmputil walk 192.168.0.3 public .1.3.6.1.2.1.25.4.2.1.2
Variable = host.hrSWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.1
Value = String System Idle Process
Variable = host.hrSWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.4
Value = String System
Variable = host.hrSWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.292
Value = String snmputil.exe
Variable = host.hr
SWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.308
Value = String RavTimer.exe
Variable = host.hrSWRun.hrSWRunTable.hrSWRunEntry. hrSWRunName.336
Value = String RavMon.exe
限於篇幅筆者就不把所有進程列出來,大家可以在自己的計算機上面實驗,以加強感性認識。
5)查詢計算機上面的用戶列表
C:>snmputil walk 192.168.0.3 public .1.3.6.1.4.1.77.1.2.25.1.1
Variable = .iso.org.dod.internet.private.enterprises. lanmanager.lanmgr-2.server.
svUserTable.svUserEntry.svUserName.4.117.115.101.114
Value = String user
Variable = .iso.org.dod.internet.private.enterprises. lanmanager.lanmgr-2.server.
svUserTable.svUserEntry.svUserName.5.71.117.101.115.116
Value = String Guest
Variable = .iso.org.dod.internet.private.enterprises. lanmanager.lanmgr-2.server.svUserTable.svUserEntry. svUserName.13.65.100.109.105.110. 105.115.116.114.97.116.111.114
Value = String Administrator
從中我們可以得知該計算機共有三個用戶,它們分別為user、guest和administrator。
Snmputil還有一個trap的參數,主要用來陷阱捕捉,它可以接受代理進程上主動發來的信息。如果我們在命令行下面輸入snmputil trap后回車,然后用錯誤的團體名來訪問代理進程,這時候就能收到代理進程主動發回的報告。
在MIBII中總共有175個對象,每個對象均有其不同的含義,我們只有通過查閱MIB才能知道它們各自的作用。MIB對象是SNMP網絡管理中的核心內容,只有深入了解MIB對象的含義我們才有可能知道如何去駕馭SNMP網絡管理。
SNMP中MIB
1. SNMP基本原理
SNMP采用了Client/Server模型的特殊形式:代理/管理站模型。對網絡的管理與維護是通過管理工作站與SNMP代理間的交互工作完成的。每個SNMP從代理負責回答SNMP管理工作站(主代理)關於MIB定義信息的各種查詢。下圖10是NMS公司網絡產品中SNMP協議的實現模型。
mib0
SNMP代理和管理站通過SNMP協議中的標准消息進行通信,每個消息都是一個單獨的數據報。SNMP使用UDP(用戶數據報協議)作為第四層協議(傳輸協議),進行無連接操作。SNMP消息報文包含兩個部分:SNMP報頭和協議數據單元PDU。數據報結構如下圖
mib1
版本識別符(version identifier):確保SNMP代理使用相同的協議,每個SNMP代理都直接拋棄與自己協議版本不同的數據報。
團體名(Community Name):用於SNMP從代理對SNMP管理站進行認證;如果網絡配置成要求驗證時,SNMP從代理將對團體名和管理站的IP地址進行認證,如果失敗,SNMP從代理將向管理站發送一個認證失敗的Trap消息
協議數據單元(PDU):其中PDU指明了SNMP的消息類型及其相關參數。
2. 管理信息庫MIB
IETF規定的管理信息庫MIB(由中定義了可訪問的網絡設備及其屬性,由對象識別符(OID:Object Identifier)唯一指定。MIB是一個樹形結構,SNMP協議消息通過遍歷MIB樹形目錄中的節點來訪問網絡中的設備。
下圖給出了NMS系統中SNMP可訪問網絡設備的對象識別樹(OID:Object Identifier)結構。
mib2
下圖給出了對一個DS1線路狀態進行查詢的OID設置例子。
mib3
3. SNMP的五種消息類型
SNMP中定義了五種消息類型:Get-Request、Get-Response、Get-Next-Request、Set-Request、Trap
* Get-Request 、Get-Next-Request與Get-Response
SNMP管理站用Get-Request消息從擁有SNMP代理的網絡設備中檢索信息,而SNMP代理則用Get-Response消息響應。Get- Next-Request用於和Get-Request組合起來查詢特定的表對象中的列元素。如:首先通過下面的原語獲得所要查詢的設備的接口數:
{iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifNumber(2)}
后再通過下面的原語,進行查詢(其中第一次用Get-Request,其后用Get-Next-Request):
{iso org(3) dod(6) internet(1) mgmt(2) mib(1) interfaces(2) ifTable(2)}
* Set-Request
SNMP管理站用Set-Request 可以對網絡設備進行遠程配置(包括設備名、設備屬性、刪除設備或使某一個設備屬性有效/無效等)。
* Trap
SNMP代理使用Trap向SNMP管理站發送非請求消息,一般用於描述某一事件的發生。
SNMP管理信息庫MIB
管理信息庫MIB指明了網絡元素所維持的變量(即能夠被管理進程查詢和設置的信息)。MIB給出了一個網絡中所有可能的被管理對象的集合的數據結構。SNMP的管理信息庫采用和域名系統DNS相似的樹型結構,它的根在最上面,根沒有名字。下圖畫的是管理信息庫的一部分,它又稱為對象命名(objectnamingtree)。
mib4
管理信息庫的對象命名舉例
對象命名樹的頂級對象有三個,即ISO、ITU-T和這兩個組織的聯合體。在ISO的下面有4個結點,其中的餓一個(標號3)是被標識的組織。在其下面有一個美國國防部(Department of Defense)的子樹(標號是6),再下面就是Internet(標號是1)。在只討論Internet中的對象時,可只畫出Internet以下的子樹(圖中帶陰影的虛線方框),並在Internet結點旁邊標注上{1.3.6.1}即可。在Internet結點下面的第二個結點是mgmt(管理),標號是2。再下面是管理信息庫,原先的結點名是mib。1991年定義了新的版本MIB- II,故結點名現改為mib-2,其標識為{1.3.6.1.2.1},或{Internet(1) .2.1}。這種標識為對象標識符。
最初的結點mib將其所管理的信息分為8個類別,見表1。現在de mib-2所包含的信息類別已超過40個。
表1 最初的結點mib管理的信息類別
類別
標號
所包含的信息
system
interfaces
address translation
ip
icmp
tcp
udp
egp
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
主機或路由器的操作系統
各種網絡接口及它們的測定通信量
地址轉換(例如ARP映射)
Internet軟件(IP分組統計)
ICMP軟件(已收到ICMP消息的統計)
TCP軟件(算法、參數和統計)
UDP軟件(UDP通信量統計)
EGP軟件(外部網關協議通信量統計)
應當指出,MIB的定義與具體的網絡管理協議無關,這對於廠商和用戶都有利。廠商可以在產品(如路由器)中包含SNMP代理軟件,並保證在定義新的MIB項目后該軟件仍遵守標准。用戶可以使用同一網絡管理客戶軟件來管理具有不同版本的MIB的多個路由器。當然,一個沒有新的MIB項目的路由器不能提供這些項目的信息。
這里要提一下MIB中的對象{1.3.6.1.4.1},即enterprises(企業),其所屬結點數已超過3000。例如IBM為 11.3.6.1.4.1.2},Cisco為{1.3.6.1.4.1.9},Novell為{1.3.6.1.4.1.23}等。世界上任何一個公司、學校只要用電子郵件發往iana-mib@isi.edu進行申請即可獲得一個結點名。這樣各廠家就可以定義自己的產品的被管理對象名,使它能用 SNMP進行管理。
SNMP 命令行接口的語法和常用參數
WebLogic SNMP 代理命令的形式如下所示:
java command-name arguments
表 5-1 描述大多數 WebLogic SNMP 代理命令常用的參數。
表 5-1 常用命令行參數
參數
定義
-d
在命令輸出中包括調試信息和數據包轉儲。
-v {v1 | v2}
指定是否使用 SNMPv1 或 SNMPv2 與 SNMP 代理進行通信。
當配置 SNMP 代理時,指定的 SNMP 版本必須和在“陷阱版本”字段中設置的 SNMP 版本相同(如“管理控制台聯機幫助”中的配置 SNMP 代理所述)
如果不指定值,該命令將假定 -v v1。
-c snmpCommunity
[@server_name | @domain_name
為 WebLogic SNMP 代理設置的社區名稱,並可選擇指定用於承載您要交互的對象的服務器實例。
要請求管理服務器上的受管對象,請指定:
snmpCommunity
其中,snmpCommunity為當配置 SNMP 代理時在“社區前綴”字段中設置的 SNMP 社區名稱(如“管理控制台聯機幫助”中的配置 SNMP 代理所述)。
要請求單個受管服務器上的受管對象,請指定:
snmpCommunity@server_name
其中,server_name為受管服務器的名稱。
要為域中的所有服務器實例請求受管對象,請按下列形式指定社區字符串:
snmpCommunity@domain_name
其中,domain_name為 WebLogic Server 域的名稱。
如果不為此參數指定值,那么命令假定
-c public,從而使用默認社區名稱,並假定指定的受管對象在管理服務器上。
-p snmpPort
WebLogic SNMP 代理監聽請求的端口號。
如果不指定值,該命令將假定 -p 161。
-t timeout
命令等待成功連接到 SNMP 代理的毫秒數。
如果不指定值,該命令將假定 -t 5000。
-r retries
命令重新嘗試連接到 SNMP 代理的失敗次數。
如果不指定值,命令在首次嘗試失敗時就退出。
host
承載 WebLogic Server 管理服務器的計算機的 DNS 名稱或 IP 地址,WebLogic SNMP 代理在此 WebLogic Server 管理服務器上運行。
http://www.oraclefmw.com/wls92/admin_ref/snmpcli.html
