发出以下命令时,标题中出现错误。
$ snmpget -v3 -u edgeos-snmpd-user -l authPriv -a SHA -x AES -A authPhrase -X privPhrase 192.168.x.x hrSystemUptime.0
hrSystemUptime.0: Unknown Object Identifier (Sub-id not found: (top) -> hrSystemUptime)
如果我在目标系统 (192.168.xx) 上输入相同的命令,我会得到一个有效的结果。
# snmpget -v3 -u edgeos-snmpd-user -l authPriv -a SHA -x AES -A authPhrase -X privPhrase localhost hrSystemUptime.0
HOST-RESOURCES-MIB::hrSystemUptime.0 = Timeticks: (1362660) 3:47:06.60
客户端是基于 Ubuntu 18.04.1 的 Docker 容器,目标是基于 Alpine 的 Linux 设备。
我已经安装snmp-mibs-downloader
在容器中并且hrSystemUptime
条目存在于"/var/lib/snmp/mibs/ietf/HOST-RESOURCES-MIB
.
-- The Host Resources System Group
hrSystemUptime OBJECT-TYPE
SYNTAX TimeTicks
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The amount of time since this host was last
initialized. Note that this is different from
sysUpTime in the SNMPv2-MIB [RFC1907] because
sysUpTime is the uptime of the network management
portion of the system."
::= { hrSystem 1 }
但是,它似乎没有搜索此目录。
$ net-snmp-config --default-mibdirs
/home/edge/.snmp/mibs:/usr/share/snmp/mibs:/usr/share/snmp/mibs/iana:/usr/share/snmp/mibs/ietf:/usr/share/mibs/site:/usr/share/snmp/mibs:/usr/share/mibs/iana:/usr/share/mibs/ietf:/usr/share/mibs/netsnmp
我复制HOST-RESOURCES-MIB
到/home/edge/.snmp/mibs
但没有任何区别。
我必须在容器中做什么才能使其正常工作?
snmp
软件包/etc/snmp/snmp.conf
安装:注释掉最后一行可以解决文件中注释所描述的问题。完全删除
snmp.conf
具有相同的效果。当我试图让 telegraf 通过 docker 轮询路由器以获取各种统计信息时,我遇到了类似的错误。
它似乎想要的文件 HOST-RESOURCES-MIB 位于硬链接文件夹中(不知道正确的术语,但使用 ls -l,它与链接的 dest.specificed 的颜色不同),但即使使用正确的docker 配置中的卷和正确的 /usr/* 权限,不行。
花了半个晚上弄乱它,但当我在 docker 中将两个硬链接文件夹指定为卷时,它最终起作用了:
很确定这只是我是个白痴,可能没有按正确的顺序安装东西,但我越是认为它似乎是一个 docker/ubuntu 问题——应该开箱即用,对吗?
我是一个完全的 linux 菜鸟,所以对于我搞砸的事情有一个简单的解释,谁知道呢。希望这可以帮助某人