erlang - 使用 erlang 构建 snmp 服务:如何让 MIB 使用其检测功能?
问题描述
我正在使用 erlang 构建 snmp 服务。我已经定义了一些 MIB 文件(例如,EX1-MIB.mib)、它们的关联文件(例如,EX1-MIB.funcs)和它们的检测功能(例如,ex1 .erl) 在同一目录中。我启动了 snmp 服务并在代理和管理器上加载了 MIB,启动了检测模块,然后我过去常常snmpm:sync_get/3
从代理那里得到我需要的东西。这是我遇到问题的部分:
snpm: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}
。)
我使用的示例来自代理实现示例文档。您可以在此链接中查看 EX1-MIB.mib、EX1-MIB.funcs 和 ex1.erl 文件。
解决方案
如果您在未修改的情况下使用链接示例,则在使用ex1:start().
服务器启动检测后,将以默认值响应:myName
是一个空字符串,并且friendsTable
.
您的经理收到的值 ( []
) 是空字符串,是 的默认值myName
。所以看起来你的仪器模块可能工作得很好。
您可以通过以下方式验证确实如此:
ex1_server
在调用时跟踪进程snmpm:sync_get/3
以查看它是否get_my_name
按预期处理消息。- 更改名称的默认值
ex1.erl
:
init() ->
register(ex1_server, self()),
loop("newDefault", []).
- 首先发送 snmp set 请求以设置非默认值。
推荐阅读
- android - 如何在安卓手机中使用私钥导入自签名证书.ca?
- mysql - 使用游标将指定字段提取到 MySQL 中的局部变量中
- matlab - 如何创建和修改矩阵并将它们传递给函数?
- go - 在项目中导入 pb.go 文件
- javascript - PHP 变量不会在 Javascript while 循环内更新
- php - 如何更新数据库中的数据与 Laravel 中数组中包含的数据一样多
- permissions - LinkedIn权限批准不起作用?
- python - 删除两个单词之间的连字符 (-) 会在列表中创建空元素
- python - Python / Django过滤组中具有最大值的行
- sql - SQL Server:在 WHILE 循环内总结局部变量的总值