Management Information Base(管理信息库,MIB)是一组对象,定义可对某个设备提出的查询。
我们所 用的snmp监控主机如果要轮询一个支持snmp的设备的某项数据,它必须发出被查询设备所能理解的查询命令,这个就需要监控主机载入被查询设备对应的 MIB,这个MIB将通知snmp监控主机有关由 MIB 模块化的数据的布局和组成。
Linux 中所使用的net-snmp自带了一些标准的MIB,但是世界上支持snmp的设备有无数种,各厂家都有自己的定义,这些定义不可能都包含在net- snmp自带的MIB中,因此,想要正确轮询一个这样的设备,必须载入厂家自己的MIB文件。
一般 我们下载回来的MIB文件可能后缀名为.mib,为了清晰起见,一般改成 MIB_NAME.txt 这样的形式,当然不改也可以,这个MIB文件叫什么名字无关紧要。
系统要载入一个MIB文 件,net-snmp必须知道从哪里载入。默认情况下是下边两个目录:
1. $HOME/.snmp/mibs
2. /usr/local/share/snmp/mibs
不过也有些发行版会改变这个默认路径,那么可以用下边两种方法之一获取它 所使用的路径。
1.如果系统安装了net-snmp-config: net-snmp-config --default-mibdirs
2.如果未安装net-snmp-config: snmptranslate -Dinit_mib .1.3 2>&1 |grep MIBDIR
一般来说MIB文件是一个纯文本文件,我们打开这个 文件查看,找到第一个包含 DEFINITIONS 的行
例如/usr/share /snmp/mibs/IP-MIB.txt 中包含如下一行
IP-MIB DEFINITIONS ::= BEGIN
这个DEFINITIONS关键字前边的 "IP-MIB" 就是系统在调用这个MIB文件时所使用的Module名称,这个很重要。
网上有一些文档说增加一个 新的mib文件就是把mib文件复制到'/usr/share/snmp/mibs/'中就可以了,其实这是不对的!
首先,我们要将下载到的MIB文件复制到前边所说的两个默认路径中的一个里
但是光复制过去还不能生效,net-snmp是不会自动加载所有在/usr/share/snmp/mibs/目录中的mib文件 的!
如果不能正确加载mib文件的话,就会出现 "Unknown Object Identifier" 这样的错误。
如果要net-snmp自动加载我们下载的 新MIB文件,有两种方法:
方法一: 放到snmp.conf中。
用 net-snmp-config --snmpconfpath可以确定snmp.conf文件的位置
[root@Kickstart-O ~]# net-snmp-config --snmpconfpath
/etc/snmp:/usr/share/snmp:/usr/lib/snmp:/root/.snmp:/var/net-snmp
将 所要加载的MIB的Module名称加到snmp.conf中,如下例:
mibs +CISCO-RHINO-MIB
mibs +SOME-OTHER-SPIFFY-MIB
如果图省事也可以这样,当然我们不建议这样。
mibs +ALL
因为这样有可能会提示如下错误
% snmpwalk -v2c public 192.168.1.100
Warning: Module MAU-MIB was in /usr/share/snmp/mibs//DOT3-MAU-MIB.txt now is /usr/share/snmp/mibs//RFC2668-MIB.txt
Warning: Module DISMAN-EVENT-MIB was in /usr/share/snmp/mibs//EVENT-MIB.txt now is /usr/share/snmp/mibs//DISMAN-EVENT-MIB.txt
Warning: Module P-BRIDGE-MIB was in /usr/share/snmp/mibs//P-BRIDGE-MIB.txt now is /usr/share/snmp/mibs//P-BRIDGE.txt
可以将标准错误文件转向来屏蔽这些警告信息
% snmpwalk -v2c public 192.168.1.100 2>/dev/null
SNMPv2-MIB::sysDescr.0 = STRING: Linux server1 2.4.34-pre2 #170 Fri Sep 15 20:10:21 CEST 2006 mips
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-TC::linux
DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (706980) 1:57:49.80
方法二: 使用系统变量
MIBS=+CISCO-RHINO-MIB:SOME-OTHER-SPIFFY-MIB
export MIBS
通过上述两种方法之一,net-snmp就可以正确加载我们的新MIB文件,使用snmpget也就可以轮询到新MIB文件中所定义 的OID了。
# snmpget -v1 -c public 192.168.49.253 BREEZECOM-DOT11EXT-MIB::roamQuality.1
BREEZECOM-DOT11EXT-MIB::roamQuality.1 = INTEGER: 3
或者这样也可以
# snmpget -v1 -c public 192.168.49.253 roamQuality.1
BREEZECOM-DOT11EXT-MIB::roamQuality.1 = INTEGER: 3
一个不太常用,但是非常有用的命令是 snmptranslate,使用'snmptranslate' 命令可以获得一个文本项对应的OID值
# snmptranslate -On BREEZECOM-DOT11EXT-MIB::roamQuality
.1.3.6.1.4.1.710.7.1.5.1.23.1.7
也可以使用 'snmptranslate' 命令查询一个指定的对象
# snmptranslate -IR roamQuality
BREEZECOM-DOT11EXT-MIB::roamQuality
还可以用snmptranslate命令把OID转化成文字描述
# snmptranslate .1.2.840.10036.2.2.1.12
IEEE802dot11-MIB::dot11FCSErrorCount
# snmptranslate -Of .1.2.840.10036.2.2.1.12
.iso.member-body.us.ieee802dot11.dot11mac.dot11CountersTable.dot11CountersEntry.dot11FCSErrorCount
也可用snmptranslate命令从mib文件获得某个对象的全部细节
# snmptranslate -Td BREEZECOM-DOT11EXT-MIB:roamQuality
BREEZECOM-DOT11EXT-MIB::roamQuality
roamQuality OBJECT-TYPE
-- FROM BREEZECOM-DOT11EXT-MIB
SYNTAX Integer32
MAX-ACCESS read-only
STATUS current
DESCRIPTION "An indicator for the quality of the BSS. The quality is
calculated over the received Beacons of the BSS and depends
on the selected quality indicator. The semantics of the
indicator is 'low is good quality' and 'high is bad quality'."
::= { iso(1) org(3) dod(6) internet(1) private(4) enterprises(1) breezeCOM(710) ds11Products(7) dot11ExtMIB(1) dot11ExtWBUObjs(5) roam(1) roamTable
(23) roamEntry(1) 7 }
另一个有用的命令是snmpwalk
# snmpwalk -v1 -c public 192.168.49.253 dot11CountersTable
IEEE802dot11-MIB::dot11TransmittedFragmentCount.1 = INTEGER: 122172497
IEEE802dot11-MIB::dot11MulticastTransmittedFrameCount.1 = INTEGER: 45242
IEEE802dot11-MIB::dot11FailedCount.1 = INTEGER: 4009
IEEE802dot11-MIB::dot11RetryCount.1 = INTEGER: 1601483
IEEE802dot11-MIB::dot11MultipleRetryCount.1 = INTEGER: 885859
IEEE802dot11-MIB::dot11FrameDuplicateCount.1 = INTEGER: 543281
IEEE802dot11-MIB::dot11RTSSuccessCount.1 = INTEGER: 0
IEEE802dot11-MIB::dot11RTSFailureCount.1 = INTEGER: 0
IEEE802dot11-MIB::dot11ACKFailureCount.1 = INTEGER: 3971754
IEEE802dot11-MIB::dot11ReceivedFragmentCount.1 = INTEGER: 108826417
IEEE802dot11-MIB::dot11MulticastReceivedFrameCount.1 = INTEGER: 31359
IEEE802dot11-MIB::dot11FCSErrorCount.1 = INTEGER: 831325
IEEE802dot11-MIB::dot11TransmittedFrameCount.1 = INTEGER: 122156588
IEEE802dot11-MIB::dot11WEPUndecryptableCount.1 = INTEGER: 0
需要注意的是,在使用snmpget命令的时候,需要在查询的OID尾部增加.0 或者 .1,不然会报错。
# snmpget -v1 -c public 192.168.49.253 dot11ACKfailureCount
Error in packet
Reason: (noSuchName) There is no such variable name in this MIB.
Failed object: IEEE802dot11-MIB::dot11ACKFailureCount
# snmpget -v1 -c public 192.168.49.253 dot11ACKFailureCount.1
IEEE802dot11-MIB::dot11ACKFailureCount.1 = INTEGER: 3971912
还有在unix系统中,系统是大小写敏感的,因此写OID的时候注意大小写不要写错。
分享到:
相关推荐
在SNMP中,管理信息库(MIB)是定义网络设备管理对象的规范,而扩展MIB则允许用户根据需求自定义管理对象,以监控和控制特定的网络设备或服务。本示例源码主要探讨了如何通过Net-SNMP的动态库方法来扩展MIB,特别是...
其中`testObj`为`TEST-MIB`中的对象。 #### 三、实现MIB对象的动态读写功能 1. **编写C语言模块**: - 根据需要的功能编写相应的C语言模块。假设我们需要读写`testObj`的值,则创建`testObj.c`文件,并在其中...
在NET-SNMP-TUTORIAL-MIB中,你可能会看到很多对象的类型定义为DisplayString,这意味着这些对象的值是可读的文本字符串。 总的来说,NET-SNMP-TUTORIAL-MIB.txt是学习和测试SNMP移植的重要资源。通过实际操作,...
MIB 是 SNMP 协议中用来描述管理对象的数据库。MIB 由一组对象标识符(OID)组成,每个 OID 对应一个管理对象。MIB 的主要组成部分包括: 1. Scalar MIB:描述标量对象,例如系统名称、系统描述、系统位置等。 2. ...
三、net-snmp-5.9.4安装与配置 在安装net-snmp-5.9.4之前,确保系统满足依赖项,然后按照官方文档的步骤进行编译和安装。安装完成后,配置文件通常位于/etc/snmp/目录下,包括snmpd.conf(代理配置)和snmp.conf...
2. SNMP库:net-snmp提供了C语言编写的库,供开发者在应用程序中集成SNMP功能。这些库支持SNMPv1、v2c和v3协议,确保了与不同版本的SNMP设备的兼容性。 3. SNMP客户端工具:包括 snmpwalk、snmpget、snmpset 等,...
这个源码包,net-snmp-5.9.1.tar.gz,是一个可移植的版本,特别适合开发学习,让开发者能够深入了解SNMP的工作原理以及如何利用它来管理和监控网络设备。 一、SNMP基础 SNMP是Internet标准协议,用于管理网络设备,...
SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10 DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (8137) 0:01:21.37 ... 这些信息包括了系统描述、对象标识、系统uptime 等信息。 在 ...
在net-snmp-5.5.0-2.x64中,除了命令行工具外,还包括C语言编写的库函数,开发者可以利用这些库来开发自己的SNMP应用程序,实现更高级的网络管理功能。此外,官方提供的文档和源代码让学习和定制net-snmp变得更为...
首先,我们关注的是标题中的“net-snmp-5.8.tar.gz”,这是一个gzip压缩过的tar文件,通常用于在Unix/Linux环境中打包和传输文件。Gzip是一种常用的文件压缩格式,而tar则用于将多个文件或目录组合成一个单一的归档...
本实例中包含了两个自定义的MIB库,这些库可以用于扩展SNMP代理的功能,提供特定设备或服务的管理信息。编写MIB库时,你需要明确定义对象的身份(OID),并描述其数据类型和访问权限。例如,一个简单的MIB库可能包含...
它包含了net-snmp的安装程序net-snmp-5.5.0-2.x64.exe和一份ReadMe.txt说明文件。在安装前,务必确保你的系统是64位的,以确保软件正常运行。 安装过程中,用户可以选择自定义安装路径。如果选择非默认路径,需要...
在本文中,我们将深入探讨net-snmp-5.7.3的源码包特性,以及如何利用内附的编译工具进行安装。 一、net-snmp-5.7.3的特点与功能 1. **SNMP协议支持**:net-snmp实现了SNMP(简单网络管理协议)的所有版本,包括v1...
Net-SNMP是一个开源的SNMP实现,它包含了代理(Agent)、管理站(Manager)以及MIB(Management Information Base)库。本文将深入探讨如何使用Net-SNMP进行代理开发,特别是如何扩展MIB库,以实现自定义的网络管理...
在压缩包中,"www.pudn.com.txt"可能是包含相关资源链接或文档的文本文件,而"net-snmp-5.4.1"是实际的源代码或编译后的二进制文件。开发者需要根据实际情况决定如何处理这些文件,例如,源代码可能需要编译以适应...
- **x86 exe 版本**:如果仅需要安装而无需编译,可以选择下载预编译的 x86 exe 版本,如 net-snmp-5.5.0-1.x86.exe。 #### 二、Windows 环境配置 ##### 2.1 编译环境选择 Net-SNMP 支持在多种 Windows 编译环境中...
首先,"net-snmp-5.5x64x86.zip"这个压缩包包含了两个版本的net-snmp工具,分别是"net-snmp-5.5.0-2.x64.exe"和"net-snmp-5.5.0-1.x86.exe",分别适用于64位和32位的Windows系统。这意味着无论你的Windows环境是32位...
首先,让我们来看看"net-snmp-5.6.1.1-1.x86.exe"这个文件。这是一款针对x86架构的Windows系统的可执行安装程序,用于在Windows平台上部署NET-SNMP 5.6.1.1版本。在运行这个文件之前,确保你的系统满足以下基本要求...
本文将围绕"Net-SNMP-perl-test_SNMPMIB_perlsnmp_"这个主题,详细探讨SNMPMIB和perlsnmp在Net-SNMP中的应用以及如何进行测试。 首先,SNMPMIB(管理信息库)是SNMP协议的核心组成部分,它定义了网络设备的状态、...
同时,通过读取设备的路由表(如IP-MIB或Routing-MIB),可以发现网络中的路由关系,进一步完善拓扑图。 在实际操作中,我们可以先启动net-snmp-5.5的snmpd服务,然后使用snmpwalk命令遍历目标设备的MIB树,收集...