![从 SNMP 获取特定信息需要采取哪些步骤?](https://linux22.com/image/1597816/%E4%BB%8E%20SNMP%20%E8%8E%B7%E5%8F%96%E7%89%B9%E5%AE%9A%E4%BF%A1%E6%81%AF%E9%9C%80%E8%A6%81%E9%87%87%E5%8F%96%E5%93%AA%E4%BA%9B%E6%AD%A5%E9%AA%A4%EF%BC%9F.png)
我想查询 FortiGate 的 CPU 使用情况。
根据 Fortinet 文档,要使用的变量是 fgPerCpuHighDetails:
$ grep fgPerCpuHighDetails /home/qa/.snmp/mibs/FORTINET-*
/home/qa/.snmp/mibs/FORTINET-FORTIGATE-MIB.mib:fgPerCpuHighDetails OBJECT-TYPE
/home/qa/.snmp/mibs/FORTINET-FORTIGATE-MIB.mib: OBJECTS { fnSysSerial, sysName, fgPerCpuHighDetails }
/home/qa/.snmp/mibs/FORTINET-FORTIGATE-MIB.mib: fgProcModMemCapacity, fgProcModMemUsage, fgPerCpuHighDetails,
但是,当我尝试探测 fgPerCpuHighDetails 时,我得到:
$ snmpget -v2c -cpublic -mALL 192.168.1.99 fgPerCpuHighDetails
FORTINET-FORTIGATE-MIB::fgPerCpuHighDetails = No Such Object available on this agent at this OID
您能否推荐一个可以解释从 SNMP 获取信息的步骤的 URL?
$ sudo systemctl status snmpd -l
● snmpd.service - Simple Network Management Protocol (SNMP) Daemon.
Loaded: loaded (/usr/lib/systemd/system/snmpd.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2019-07-17 16:46:31 PDT; 21h ago
Main PID: 879 (snmpd)
Tasks: 1
CGroup: /system.slice/snmpd.service
└─879 /usr/sbin/snmpd -LS0-6d -f
Jul 17 16:46:30 vestal8 systemd[1]: Starting Simple Network Management Protocol (SNMP) Daemon....
Jul 17 16:46:31 vestal8 snmpd[879]: NET-SNMP version 5.7.2
Jul 17 16:46:31 vestal8 systemd[1]: Started Simple Network Management Protocol (SNMP) Daemon..
$ snmpwalk -v2c -c public 192.168.1.99 fgPerCpuHighDetails
fgPerCpuHighDetails: Unknown Object Identifier (Sub-id not found: (top) -> fgPerCpuHighDetails)
答案1
要使用文本形式轮询 OID,您应该使用符号MIB::OID
。如果您使用数字形式的 OID,则可以直接使用它。这是因为 SNMP 代理使用数字形式,而人类使用文本(类似于 DNS)。因此,代理可以轻松解析数字,但需要将文本形式转换为数字。MIB 可以做到这一点,因此您需要指定定义 OID 的正确 MIB,以便 snmp 命令可以在轮询代理之前对其进行转换。
MIB 名称由 MIB 文件中的语句定义DEFINITIONS
。不要将其与 MIB 文件的名称混淆(有时相同,但并非总是如此)。因此,正如fgPerCpuHighDetails
您的示例中在 中定义的那样FORTINET-FORTIGATE-MIB.mib
,请执行以下操作:
grep DEFINITIONS /home/qa/.snmp/mibs/FORTINET-FORTIGATE-MIB.mib
找出 MIB 的名称。我没有这个特定的 MIB,但名称可能是FORTINET-FORTIGATE-MIB
。
利用该信息,您可以轮询设备:
snmpwalk -v2c -c public 192.168.1.99 FORTINET-FORTIGATE-MIB::fgPerCpuHighDetails
用于snmptranslate
解析 MIB 并探索它们:
snmptranslate -Td MIB::OID
用于描述 OIDsnmptranslate -Tp MIB::OID
映射 OID 和所有子 OID 的层次结构。snmptranslate -On MIB:OID
将 OID 转换为数字形式查看手册页以了解更多选项。