使用静态 oid 扩展 snmp

使用静态 oid 扩展 snmp

我正在尝试扩展 snmp 以返回给定进程的数量

这是工具,保存在 /usr/bin/count_proc.sh

#!/bin/bash
ps aux | awk '
BEGIN { c=0 }
/processname$/ { c=c+1 }
END { print $c }'

在我的 snmpd.conf 中,有以下行:

extend .1.3.6.1.4.1.8072.9999.1 count_proc /usr/bin/count_proc.sh

但是,我无法使用此 OID 检索此命令的结果。当我针对此 OID 运行 snmp 查询时,结果是:

Value: (Snmp No Such object)

如果我遍历 snmp 树,我最终会看到一些东西,但它很奇怪......“下一个 OID”是我的工具的名称,根本不是数字。

OID: .1.3.6.1.4.1.8072.9999.1.2.1.2.9.99.111.117.110.116.95.102.119.100
Next OID: /usr/bin/count_proc.sh
Value: 1

最后,我将看到我期望的值。

OID: .1.3.6.1.4.1.8072.9999.1.3.1.1.9.99.111.117.110.116.95.102.119.100
Value: 13

但这不是我期望查询以找到输出的 OID。我还将在其他几个 OID 上找到输出。

这是按预期工作吗,还是我遗漏了一些重要的东西?

答案1

我个人使用不带 OID 的扩展,例如:

extend count_proc /usr/bin/count_proc.sh

snmp生成的OID比较简单,结果为:
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line。”计数过程”

OID 为:
1.3.6.1.4.1.8072.1.3.2.3.1.110.99.111.117.110.116.95.112.114.111.99

解释 : 10 : number of character in "count_proc" 99 : ASCII decimal value of 'c' 111 : ASCII decimal value of 'o' 117 : ASCII decimal value of 'u' 110 : ASCII decimal value of 'n' 116 : ASCII decimal value of 't' 95 : ASCII decimal value of '_' 112 : ASCII decimal value of 'p' 114 : ASCII decimal value of 'r' 111 : ASCII decimal value of 'o' 99 : ASCII decimal value of 'c'

因此您可以轻松地通过编程检索 OID。

答案2

大概此链接可以帮助您“扩展”命名约定

相关内容