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

init_mib: Seen MIBDIRS: Looking in '/root/.snmp/mibs:/usr/share/snmp/mibs' for mib dirs ...

二、net-snmp加载MIB文件方法

一般来说MIB文件是一个纯文本文件,我们打开这个文件查看,找到第一个包含DEFINITIONS 的行

例如/usr/share/snmp/mibs/IP-MIB.txt中包含如下一行

# head /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"这样的错误。

1、正确加载MIB文件的方法

如果要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变量)

# MIBS=+CISCO-RHINO-MIB:SOME-OTHER-SPIFFY-MIB

# export MIBS #导入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

三、snmp常用命令

1、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 }

2、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

3、snmpget

需要注意的是,在使用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

四、导入mib库并获取负载均衡F5的Mib信息

按以下方法将F5的mib库mibs_f5.tar.gz解压后的文件放到snmpd服务器的mib库目录,重启服务service snmpd restart即可。

验证成功:

snmpwalk -c public -v 2c 123.123.123.123 F5-BIGIP-LOCAL-MIB::ltmVirtualServVaName

参考链接:

Management Information Base(管理信息库,MIB)是一组对象,定义可对某个设备提出的查询。我们所用的snmp监控主机如果要轮询一个支持snmp的设备的某项数据,它必须发出被查询设备所能理解的查询命令,这个就需要监控主机载入被查询设备对应的 MIB,这个MIB将通知snmp监控主机有关由 MIB 模块化的数据的布局和组成。

php导入mib表,Linux snmp导入MIB库相关推荐

  1. linux mysql命令行导入_在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)...

    因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客 ...

  2. Allegro 导入网表+元器件快速导入PCB

    文章目录 一.前期准备 1.将需要用到的PCB封装库和焊盘库准备好. 2.先用orcad capture导出网表文件,一般是在allegro文件夹下面,如下图,allegro文件夹下即为原理图导出的网 ...

  3. mysql导入excel表_mysql怎么导入excel数据?

    mysql导入excel数据的步骤: 1.第一步我们得到了一个excel表,里面有很多需要我们导入的数据. 2.删除第1行"准考证号""XXX"....只保留我 ...

  4. mysql导入excel表异常_mysql导入excel表格数据时出错的解决

    Navicat for MySQL导入数据时报错 1:导入的是Excel2007表格格式的数据. 2: 报错以后数据加进去了.(选择了错误继续执行) 3:这个错误对我的数据有影响吗? 4:造成这个错误 ...

  5. oracle导入备份失败怎么办,ORACLE 数据备份、恢复以及导入时表空间不存在的解决方案...

    一.数据备份(导出) 1.exp命令导出dmp文件(exp -help查看帮助信息) 命令:exp username/userpasswd@orcl file=G:/test.dmp log=G:/t ...

  6. linux添加Mib库,Linux SNMP中的管理信息库(MIB)学习

    简单网络管理协议(Linux SNMP)首先是由Internet工程任务组织(Internet Engineering Task Force)(IETF)的研究小组为了解决Internet上的路由器管 ...

  7. linux上oracle导入mysql_linux下的oracle数据库和表空间的导入导出

    由于oracle是安装在linux上面,因此需要oracle的导入导出都是使用命令进行操作.oracle允许整个数据库导入导出和表空间的导入导出. 数据库导入导出 以下操作是在操作系统控制台命令中执行 ...

  8. linux添加Mib库,如何在ubuntu下使snmp支持mibs库字符串形式

    ubuntu下使用snmp,我们可以使用mibs库的OID来查询我们想要得到的结果,例如: snmpwalk -v 2c -c public localhost .1.3.6.1.2.1.25.2.2 ...

  9. SNMP、MIB、OID概念的理解

    为什么80%的码农都做不了架构师?>>>    1.1. SNMP概览 SNMP的基本知识介绍 简单网络管理协议(SNMP-Simple Network Management Pro ...

  10. 基于SNMP的MIB库访问实现的研究

    蔡国森 (北京工商大学  计算机学院) 摘要  SNMP是用于网络管理/代理之间的请求/应答协议.管理信息库(MIB)定义了由代理者维护的各种变量,它们由管理者来进行存取操作,从而实现具体的网络管理. ...

最新文章

  1. 「技术综述」如何降低遮挡对人脸识别的影响
  2. 汇编实验注意点(待补充和更新)
  3. 深度学习核心技术精讲100篇(十二)-DCGAN(对抗生成网络)算法应用及代码实现
  4. socket 编程入门教程(一)TCP server 端:6、创建“通讯 ”嵌套字
  5. pythonint函数的参数_向嵌入的Python函数传递两个参数(int和array)
  6. python运行命令_Python中执行外部命令
  7. ssm项目启动,加载数据库连接池时卡住
  8. unix和linux命令_Linux vs. Unix,在命令行中清理数据,为儿童准备的15本书,以及更多必读内容
  9. struts2如何使用拦截器进行用户权限控制
  10. Linux在Ubuntu下安装TFTP
  11. Python写的网络爬虫程序
  12. IGBTMOS管的工作原理及检测方法
  13. 使用vue-ui可视化管理工具来创建项目并安装vue-cli-plugin-element插件
  14. Python Web 框架-Django day06
  15. 三村合建水厂问题研究
  16. vivo 应用商店推荐系统探索与实践
  17. 伤害世界怎么自建服务器,伤害世界服务器架设图文教程
  18. hualinux 编程概念 3.11 快速原型模型:以最快最小代价完成产品特性
  19. 按要求自动生成无向/有向图(基于C++实现)
  20. 如何面对工作中的困难和纠结

热门文章

  1. Unity 给代码添加命名空间
  2. zabbix Event acknowledgment事件确认
  3. GTX高速收发器Transceiver概述与收发共同特征(UG476)
  4. 从石器时代到硅器时代
  5. Linux 30岁了,你知道吗?
  6. 层次分析法原理讲解 python手搓实现-故事带入小白详解版
  7. CRISPR基因编辑技术获诺奖,人类的福音还是灾难?
  8. 7-4 查询水果价格 PTA
  9. 数据挖掘 第五篇:分类(kNN)
  10. matlab 创建网格图和曲面图