2015-04-01 121 views
0

我必須通過一些支持SNMP的網絡打印機來收集一些OID,並使用我一直在研究的BASH腳本。SNMP OUTPUT OPTIONS - 如何獲得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/),但我不明白爲什麼這不是更常見的問題,因爲我一直在回答到處尋找和這個職位是我的最後手段...

+0

您是否在示例中刪除了「實際響應」中的幾位數字?這與討論的其餘部分不匹配。 – tripleee 2015-04-01 09:25:44

+0

不確定這是一個編程問題。不過,其中一個答案是編程答案。 =) – Jolta 2015-04-13 11:55:10

回答

4

您可以調整與-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) 
+0

這是-Oqv選項的技巧,謝謝 – user2179455 2015-04-01 19:30:15

+0

對我來說,這就是Stackoverflow的全部內容;對特定問題的簡單回答。 '-Oqv'是黃金。 – Joe 2017-01-22 14:43:04

0

您可以使用簡單的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]+'