我正在使用erlang构建snmp服务。我定义了一些MIB文件(例如EX1-MIB.mib),它们的关联文件(例如EX1-MIB.funcs)及其检测功能(例如。,ex1.erl)在同一目录中。我启动了snmp服务,并将MIB加载到了代理程序和管理器上,启动了检测模块,然后使用snmpm:sync_get/3
从代理程序中获取所需的信息。这是我遇到的问题:
snmpm:sync_get(“ simple_user”,“ otp代理”,[[1,3,6,1,3,7,1,0]])。
{ok,{noError,0, [{varbind,[1,3,6,1,3,7,1,0],'OCTET STRING',[],1}]}, 4971}
[1,3,6,1,3,7,1]
是我尝试获取的变量的OID,但返回值为[]
。我认为它没有使用我的检测模块,我想知道为什么。
(我确定我的检测模块可以正常工作,并且可以返回元组{value, XXX}
。)
我使用的示例来自Agent Implementation Example documentation。您可以在此链接中看到EX1-MIB.mib,EX1-MIB.funcs和ex1.erl文件。
答案 0 :(得分:0)
如果您使用的链接示例未经修改,则在以ex1:start().
开始检测之后,服务器将使用默认值进行响应:myName
是一个空字符串,并且{{ 1}}。
您的经理收到的值(friendsTable
是空字符串,这是[]
的默认值。因此,看来您的检测模块可以正常工作。
您可以通过以下方式验证确实如此:
myName
的同时跟踪ex1_server
进程,以查看它是否按预期处理了snmpm:sync_get/3
消息。get_my_name
中名称的默认值:ex1.erl