使用erlang构建snmp服务:如何让MIB使用其检测功能?

时间:2018-09-04 18:18:55

标签: erlang snmp

我正在使用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文件。

1 个答案:

答案 0 :(得分:0)

如果您使用的链接示例未经修改,则在以ex1:start().开始检测之后,服务器将使用默认值进行响应:myName是一个空字符串,并且{{ 1}}。

您的经理收到的值(friendsTable是空字符串,这是[]的默认值。因此,看来您的检测模块可以正常工作。

您可以通过以下方式验证确实如此:

  • 在调用myName的同时跟踪ex1_server进程,以查看它是否按预期处理了snmpm:sync_get/3消息。
  • 更改get_my_name中名称的默认值:
ex1.erl
  • 首先发送snmp设置请求以设置非默认值。