小猪一只. 2024-12-27 15:47 采纳率: 0%
浏览 12

请问我应该如何操作才能把信息正确的存储在MIB库新扩展的节点上

现已经通过MIB Builder创建了一个新的MIB库节点,已经编译成新MIB库,目前遇到的问题是:把信息存在MIB库新扩展的节点上时,使用set操作遇到错误,导致set不上,如下图所示:

img

img

点击下方按钮后,出现如下错误:

img

img

我的其余配置如下:

img

img

请问我应该如何操作才能把信息正确的存储在MIB库新扩展的节点上

  • 写回答

1条回答 默认 最新

  • 道友老李 JWE233286一种基于机器视觉的水表指针读数识别及修正的方法 专利发明者 2024-12-27 16:01
    关注
    让【道友老李】来帮你解答,本回答参考通义千问大模型编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
    如果答案让您满意,请采纳、关注,非常感谢!
    根据你提供的信息,你在尝试使用SNMP的`set`操作向MIB库中新增的节点写入数据时遇到了问题。错误提示表明可能是由于权限、配置或MIB定义的问题导致无法成功设置值。以下是一些可能的原因及解决方法:

    1. 检查MIB定义

    确保你的MIB文件中对新节点的定义是正确的,并且该节点被允许进行写操作(即ACCESS属性为read-write)。

    示例:

    myNewNode OBJECT-TYPE
        SYNTAX      INTEGER
        MAX-ACCESS  read-write
        STATUS      current
        DESCRIPTION
            "A new node in the MIB."
        ::= { myMibModule 1 }
    

    2. 确认SNMP Agent配置

    确保你的SNMP代理(如Net-SNMP)已经正确加载了新的MIB文件,并且配置允许对该节点进行写操作。

    示例配置:snmpd.conf中添加:

    # 加载自定义MIB文件
    mibdirs /path/to/your/mibs
    loadmodule YOUR-MIB-NAME
    
    # 允许写操作
    rwcommunity public 192.168.1.0/24
    

    3. 检查访问控制列表(ACL)

    确保没有ACL规则阻止了对新节点的写操作。

    示例配置:snmpd.conf中检查是否有类似以下的规则:

    # 允许特定IP地址进行读写操作
    rouser public localhost
    

    4. 验证OID路径

    确保你使用的OID路径是正确的,并且与MIB文件中的定义一致。

    示例: 假设你的新节点OID是1.3.6.1.4.1.12345.1.1.1.1,确保在set操作中使用的是这个OID。

    5. 使用命令行工具进行测试

    可以使用snmpset命令行工具来测试是否可以成功写入数据。

    示例命令:

    snmpset -v 2c -c public 127.0.0.1 1.3.6.1.4.1.12345.1.1.1.1 i 123
    

    6. 调试日志

    查看SNMP代理的日志文件,以获取更多关于错误的详细信息。

    示例:

    tail -f /var/log/snmpd.log
    

    7. 检查数据类型

    确保你尝试写入的数据类型与MIB文件中定义的数据类型一致。

    示例: 如果MIB文件中定义为INTEGER,则不能写入字符串类型的值。

    8. 重新启动SNMP代理

    有时需要重新启动SNMP代理以使配置生效。

    示例命令:

    sudo systemctl restart snmpd
    

    代码示例

    以下是一个简单的Python脚本,使用pysnmp库来执行set操作:

    from pysnmp.hlapi import *
    
    errorIndication, errorStatus, errorIndex, varBinds = next(
        setCmd(SnmpEngine(),
               CommunityData('public', mpModel=1),
               UdpTransportTarget(('127.0.0.1', 161)),
               ContextData(),
               ObjectType(ObjectIdentity('1.3.6.1.4.1.12345.1.1.1.1'), Integer(123)))
    )
    
    if errorIndication:
        print(f'Error: {errorIndication}')
    elif errorStatus:
        print(f'Error: {errorStatus.prettyPrint()} at {errorIndex and varBinds[int(errorIndex) - 1][0] or "?"}')
    else:
        for varBind in varBinds:
            print(f'Success: {varBind[0].prettyPrint()} = {varBind[1].prettyPrint()}')
    

    通过以上步骤,你应该能够找到并解决无法将信息存储到MIB库新扩展节点的问题。如果问题仍然存在,请提供更多的错误日志和配置细节以便进一步诊断。

    评论

报告相同问题?

问题事件

  • 创建了问题 12月27日