在 Net-SNMP snmpd 中检查扩展 sh 脚本输出的哪个 OID?

在 Net-SNMP snmpd 中检查扩展 sh 脚本输出的哪个 OID?

我使用 shell 脚本扩展了extend-shNet-SNMP 的功能,snmpd如果脚本检查的条件为真,则该脚本会回显“空”。但是,似乎有多个 OID 包含此字符串- nsExtendOutput1Line."backup",nsExtendOutputFull."backup"nsExtendOutLine."backup".1。哪一个是要监控的正确 OID?这里的最佳实践是什么?仅供参考,“备份”只是名称标记。此外,在 Net-NMP 中也可以看到类似的行为维基百科检索值部分。

答案1

使用哪个 OID 取决于您的脚本输出的内容、您对其中的哪一部分感兴趣,以及在检查这些 OID 的监控系统内可能更容易处理的内容。

SNMP 中的 OID 只是一个(标准化)命名某物他们snmpd知道的。

由于 OID 内部包含字符串,因此通常通过计算字符数,然后将每个字符的 ASCII 代码添加到其中,将字符串转换为数字。例如,"hello"(5 个字符长)将变为5.104.101.108.108.111.

您可以使用 snmptranslate 检查这一点:

% snmptranslate .1.3.6.1.4.1.8072.1.3.2.3.1.1.5.104.101.108.108.111
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello"

但回到问题。您可以通过配置检查的各种 OIDextend有助于从扩展脚本的运行中获取多个属性。

要查看所有功能,请考虑这个可执行 sh 脚本,它输出两行,并返回任意值,配置为extend hello /usr/local/sbin/myscript

#!/bin/sh
echo today
date
exit 33

通过 snmpwalk 的输出可以是:

% snmpwalk -v2c -c mysecretcommunity localhost .1.3.6.1.4.1.8072.1.3.2.3.1
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello" = STRING: today
NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello" = STRING: today
Sat Dec 19 15:59:59 UTC 2015
NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello" = INTEGER: 2
NET-SNMP-EXTEND-MIB::nsExtendResult."hello" = INTEGER: 33

因此,您可以检查的 OID 是:

NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."hello"

第一的脚本输出的行。如果您感兴趣的脚本只有一行输出,或者所有重要数据都在第一行,请使用它。

NET-SNMP-EXTEND-MIB::nsExtendOutputFull."hello"

如果您的脚本打印多行,并且您需要记录所有这些,这可能会更好。

NET-SNMP-EXTEND-MIB::nsExtendOutNumLines."hello"

数字脚本输出中的行数。如果您对输出中有多少行感兴趣,请使用它。如果您的脚本为其处理的每个文件打印一行,并且您只关心处理了多少个文件,那么这可能就是您所需要的。

NET-SNMP-EXTEND-MIB::nsExtendResult."hello"

如果您有兴趣查看脚本是否失败或成功,并且它返回适当的退出代码,则此 OID 将返回该代码。

NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".1 = STRING: today
NET-SNMP-EXTEND-MIB::nsExtendOutLine."hello".2 = STRING: Sat Dec 19 16:02:44 GMT 2015

如果您知道哪个特定行包含您感兴趣的信息,则可以使用上述 OID 获取特定行号。

这些以及更多内容应该可用并记录在系统上此 OID 的 MIB 文件中(尽管以相当技术性的方式),位置如下:/usr/share/snmpd/mibs/NET-SNMP-EXTEND-MIB.txt

因此,这完全取决于您需要从运行的脚本中处理和/或监视的内容。

请注意,由于 SNMP 是基于 UDP 的,如果在配置的超时内未看到响应,许多代理将超时和/或重新发送请求,因此脚本可能运行多次,和/或可以在监控站不可见结果的情况下运行。最好仅将其用于非常短的运行脚本(即在所有情况下都在几秒钟内完成)。

另一种方法可能是启动一个后台进程,然后必须通过适当的锁定方法防止并发运行。如果后者引发更多问题,恐怕它们可能会在不同的主题中得到更好的解答,具体取决于要执行的操作。

相关内容