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


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


我的其余配置如下:


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


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


我的其余配置如下:


请问我应该如何操作才能把信息正确的存储在MIB库新扩展的节点上
关注让【道友老李】来帮你解答,本回答参考通义千问大模型编写,并整理提供,如果还有疑问可以点击头像关注私信或评论。
如果答案让您满意,请采纳、关注,非常感谢!根据你提供的信息,你在尝试使用SNMP的`set`操作向MIB库中新增的节点写入数据时遇到了问题。错误提示表明可能是由于权限、配置或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 }
确保你的SNMP代理(如Net-SNMP)已经正确加载了新的MIB文件,并且配置允许对该节点进行写操作。
示例配置: 在snmpd.conf中添加:
# 加载自定义MIB文件
mibdirs /path/to/your/mibs
loadmodule YOUR-MIB-NAME
# 允许写操作
rwcommunity public 192.168.1.0/24
确保没有ACL规则阻止了对新节点的写操作。
示例配置: 在snmpd.conf中检查是否有类似以下的规则:
# 允许特定IP地址进行读写操作
rouser public localhost
确保你使用的OID路径是正确的,并且与MIB文件中的定义一致。
示例: 假设你的新节点OID是1.3.6.1.4.1.12345.1.1.1.1,确保在set操作中使用的是这个OID。
可以使用snmpset命令行工具来测试是否可以成功写入数据。
示例命令:
snmpset -v 2c -c public 127.0.0.1 1.3.6.1.4.1.12345.1.1.1.1 i 123
查看SNMP代理的日志文件,以获取更多关于错误的详细信息。
示例:
tail -f /var/log/snmpd.log
确保你尝试写入的数据类型与MIB文件中定义的数据类型一致。
示例: 如果MIB文件中定义为INTEGER,则不能写入字符串类型的值。
有时需要重新启动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库新扩展节点的问题。如果问题仍然存在,请提供更多的错误日志和配置细节以便进一步诊断。