【问题标题】:SNMP OUTPUT OPTIONS - How do I get the OID response value only?SNMP 输出选项 - 如何仅获取 OID 响应值?
【发布时间】:2015-04-01 09:00:27
【问题描述】:

我必须使用我一直在处理的 BASH 脚本从一些启用了 SNMP 的网络打印机收集一些 OID。

我的要求:

snmpget -v2c -c public 192.168.0.77 
.1.3.6.1.2.1.1.1 
.1.3.6.1.2.1.1.2 

我的实际反应:

 .1.3.6.1.2.1.1.1 = Counter32: 1974 
 .1.3.6.1.2.1.1.2 = Counter32: 633940

期望的响应:

1974
633940314

(仅 oid 值)

我使用以下站点的资源查看并测试了几个选项:

http://www.netsnmp.org/docs/man/snmpcmd.html#lbAF

-Oq 删除 '=' 所以运行

snmpget -v2c -c public -Oq 10.15.105.133
.1.3.6.1.2.1.1.1 
.1.3.6.1.2.1.1.2 

返回

.1.3.6.1.2.1.1.1 Counter32: 1974
.1.3.6.1.2.1.1.2 Counter 32: 633940314

所以我知道我的请求措辞正确。

我正在获取值并将它们写入 MYSQL dB,我在我的故事模式中设置数据类型,请求是一致的,所以我知道 OID 的定义,所以我不需要我得到的所有信息回来,只是 OID 本身的值,所以我可以将它写入我的 dB 而无需操纵响应。我可能可以操纵将信息拉到“:”右侧的响应并写入 OID 的值。

我对 SNMP (http://www.net-snmp.org/) 比较陌生,但我不明白为什么这不是一个更常见的问题,因为我一直在到处寻找答案,而这篇文章是我最后的求助...

【问题讨论】:

  • 您是否从示例中的“实际响应”中删除了几位数字?它与讨论的其余部分不符。
  • 不确定这是一个编程问题。不过,其中一个答案是编程答案。 =)

标签: mysql bash snmp net-snmp mib


【解决方案1】:

您可以使用 -O 参数调整输出:

snmpgetnext -Oqv -v 2c -c public 192.168.0.77 .1
2

--help

q:  quick print for easier parsing
v:  print values only (not OID = value)

【讨论】:

  • 对我来说这就是 Stackoverflow 的意义所在;对特定问题的简洁回答。 -Oqv 是金子。
【解决方案2】:

您可以使用简单的 Awk 或 sed 脚本对输出进行后处理,甚至只需 grep(前提是您有 grep -P)。

snmpget -v2c -c public 192.168.0.77 <<'____HERE' | awk '{ print $4 }'
.1.3.6.1.2.1.1.1 
.1.3.6.1.2.1.1.2
____HERE

.... | sed 's/.*: //'

.... | grep -oP ':\K[0-9]+'

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多