一些应用程序可以用来从支持 SNMP 的设备获得数据。其中 snmpget, snmpgetnext 可以支持独立请求,比如:
当环境设置好后,运行snmpd.exe,即snmp代理进程,就可以使用管理工具查询其中的信息了。Net-snmp提供的查询工具有很多,这里只介绍常用的几个,而且大部分查询命令的格式都大同小异。这里以.iso.org.dod.internet.mgmt.mib-2.system为例,其Oid为:.1.3.6.1.2.1.1。结构如下:
………system .1.3.6.1.2.1.1
|——sysDescr .1.3.6.1.2.1.1.1
|——sysObjectID .1.3.6.1.2.1.1.2
……
1. snmpget
输入如下命令: snmpget -v 1 -c demopublic test.net-snmp.org system.sysUpTime.0 会显示如下内容: DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (783057833) 90 days, 15:09:38.33 |
该命令获得单个独立的 MIB 对象 system.sysUpTime.0 的值。
Normal 0 7.8 pt 0 2 false false false MicrosoftInternetExplorer4
snmpget.exe——snmpget [OPTIONS] AGENT OID [OID]...用来查询叶子节点
实例:snmpget –v2c –c publiclocalhost .1.3.6.1.2.1.1.5.0
-v2c: 使用的是2c的snmp版本,可选1|2c|3
-c public:community 名为public
localhost: 代理的地址,这里因为代理运行在本机上,所以可用localhost
.1.3…….0:这里查询的是.iso.org.dod.internet.mgmt.mib-2.system.sysName,其Oid为.1.3.6.1.2.1.1.5,使用这个命令查询叶子节点要在后面加.0。
.0即表示一个实体。
2.snmpwalk
而 snmpwalk, snmptable, snmpdelta 则用来支持重复请求。
输入如下命令:
snmpwalk -v 2c -c demopublic test.net-snmp.org system
会显示如下内容:
SNMPv2-MIB::sysDescr.0 = STRING: test.net-snmp.org
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (783081729) 90 days, 15:13:37.29
SNMPv2-MIB::sysContact.0 = STRING: Net-SNMP Coders <net-snmp-coders@lists.sourceforge.net>
SNMPv2-MIB::sysName.0 = STRING: test.net-snmp.org
SNMPv2-MIB::sysLocation.0 = STRING: Undisclosed
SNMPv2-MIB::sysORLastChange.0 = Timeticks: (3) 0:00:00.03
上面的命令返回所有 system 节点以下的 MIB 对象的值
相当于便利system节点下的所有叶子节点。
3.snmpset
命令 snmpset 对支持 SNMP 的设备配置属性。如下例所示:
$ snmpget -v 1 -c demopublic test.net-snmp.org ucdDemoPublicString.0
UCD-DEMO-MIB::ucdDemoPublicString.0 = "hi there!"
$ snmpset -v 1 -c demopublic test.net-snmp.org ucdDemoPublicString.0 s "Hello, world!"
UCD-DEMO-MIB::ucdDemoPublicString.0 = "Hello, world!"
$ snmpget -v 1 -c demopublic test.net-snmp.org ucdDemoPublicString.0
UCD-DEMO-MIB::ucdDemoPublicString.0 = "Hello, world!"
snmpset.exe——snmpset[OPTIONS] AGENT OID TYPE VALUE [OID TYPE VALUE]...修改数据
实例:snmpset –v2c –c public localhost .1.3.6.1.2.1.4.21.1.3.xi 99
x:在这里是索引值,表示表项中某一列的第几个数据,根据要求设定
i: 这里是列数据类型,包括i: INTEGER,u: unsigned INTEGER, t: TIMETICKS,
a: IPADDRESS o: OBJID, s: STRING, x: HEX STRING,
d: DECIMALSTRING, b: BITS U: unsigned int64,
I: signedint64, F: float, D: double
4. snmpnetstat
命令 snmpdf, snmpnetstat, snmpstatus 可以从支持 SNMP 的设备获取特定的信息。比如下面的命令从目标系统上获得类似 netstat 的信息:
% snmpnetstat -v 2c -c public -a testhost
Active Internet (tcp) Connections (including servers)
Proto Local Address Foreign Address (state)
tcp *.echo *.* LISTEN
tcp *.discard *.* LISTEN
tcp *.daytime *.* LISTEN
tcp *.chargen *.* LISTEN
tcp *.ftp *.* LISTEN
tcp *.telnet *.* LISTEN
tcp *.smtp *.* LISTEN
Active Internet (udp) Connections
Proto Local Address
udp *.echo
udp *.discard
udp *.daytime
udp *.chargen
udp *.time
5. snmptranslate
snmptranslate 命令将 MIB OIDs 的两种表现形式 ( 数字及文字 ) 相互转换。并显示 MIB 的内容与结构,如下所示:
% snmptranslate .1.3.6.1.2.1.1.3.0
SNMPv2-MIB::sysUpTime.0
% snmptranslate -On SNMPv2-MIB::sysUpTime.0
.1.3.6.1.2.1.1.3.0
6. snmpgetnext
snmpgetnext.exe——snmpgetnext [OPTIONS] AGENT OID [OID]...通过父节点查询叶子节点
实例:snmpgetnext –v2c –c publiclocalhost .1.3.6.1.2.1.1
这个命令假设不知道叶子节点,但知道父节点,则可遍历到第一个叶子节点。此例结果等同于上一个例子。Oid也可输入.1.3.6.1.2,因为它是按字典顺序遍历的。(此处,可以结合数据结构二叉树的知识进行学习)
7. snmptable
snmptable.exe——snmptable [OPTIONS] AGENT TABLE-OID 用来查询表对象
实例:snmptable –v2c –c public localhost .1.3.6.1.2.1.4.20
这个命令查询表对象,本例中查询的是.iso.org.dod.internet.mgmt.mib-2.ip.ipAddrTable