Net-SNMP中MIB库的扩展

本文介绍了如何在Net-SNMP中扩展MIB库,包括停止snmpd服务,创建并编辑MIB文件,配置snmp.conf,校验和编译MIB,修改自动生成的C文件,重新configure并编译安装,最后启动服务并验证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

停止snmpd

安装net-snmp成功后,确认net-snmp是停止运行状态。

创建MIB文件

新建My-MIB.txt文件,文件中的MIB使用的是1.3.6.1.4.1.310作为OID
内容为:

My-MIB DEFINITIONS::= BEGIN
IMPORTS
 enterprises, OBJECT-TYPE, Integer32
    FROM SNMPv2-SMI
 TEXTUAL-CONVENTION, DisplayString
    FROM SNMPv2-TC;
 My OBJECT IDENTIFIER::={enterprises 310}
 Warn OBJECT IDENTIFIER::={My 1}
 
SysSt OBJECT-TYPE
 SYNTAX      DisplayString
 ACCESS      read-only
 STATUS      current
 DESCRIPTION "My SysSt"
 ::={Warn 1}
END

拷贝文件

My-MIB.txt拷贝到net-snmp的安装目录下,在我机器上是/usr/share/snmp/mibs

配置snmp.conf

### 扩展 net-snmpMIB 以添加私有节点 #### 准备工作 为了成功扩展 net-snmpMIB 并添加私有节点,需先确保已正确安装 net-snmp 开发包以及必要的工具链。通常情况下,在 Linux 发行版上可以通过包管理器来完成这些软件的安装。 对于自定义 MIB 文件而言,应当将其放置于特定路径以便 net-snmp 能够识别和加载该文件。一般推荐的位置为 `/usr/local/net-snmp/share/snmp/mibs/`[^2]。 #### 创建自定义 MIB 文件 创建一个新的文本文件命名为 `My-MIB.txt` 并按照 SNMP 协议规定的语法编写所需的 OID 和对象描述信息。此文件应包含所要增加的所有新对象及其属性说明等内容。完成后将这个文件复制到上述指定位置[^3]。 #### 配置编译环境 如果打算通过源码方式集成新的模块,则需要重新配置构建选项。这一步骤涉及到设置前缀参数 (`--prefix`) 及指定额外的 MIB 模块名称(`--with-mib-modules`) 来告知编译系统有关新增加的功能部分[^5]: ```bash ./configure --prefix=/usr/local/snmp --with-mib-modules="myModule" ``` 这里假设正在开发的新功能被命名为 "myModule"。 #### 修改 mib2c 生成模板 有时默认由 mib2c 工具产生的 C 语言代码可能无法满足实际需求,这时就需要手动调整其行为模式或直接编辑所产生的 `.c` 文件以适应具体应用场景的要求[^4]。例如,当处理表型数据结构时,往往还需要实现相应的 GETNEXT 请求逻辑支持等功能。 #### 编写 handler 处理程序 针对每一个希望暴露给外部访问的对象都需要提供对应的处理器函数用于响应来自客户端的各种操作请求(如读取、设置)。这部分工作主要集中在实现 snmpd.conf 中定义的服务端接口之上,并且会涉及到底层的数据存储机制设计等问题。 最后不要忘记重启服务使更改生效: ```bash systemctl restart snmpd.service ``` 或者如果是其他初始化系统的话可能是这样的命令: ```bash service snmpd restart ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值