我正在尝试扩展 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.1。10.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
大概此链接可以帮助您“扩展”命名约定