5

I have to go through and collect a few OIDs from some SNMP enabled network printers with a BASH script I have been working on.

My Request:

snmpget -v2c -c public 192.168.0.77 
.1.3.6.1.2.1.1.1 
.1.3.6.1.2.1.1.2 

My Actual Response:

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

The Desired Response:

1974
633940314

(just the oid values only)

I looked and tested several options using the resource from the site below:

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

-Oq removes '=' so running

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 

returns

.1.3.6.1.2.1.1.1 Counter32: 1974
.1.3.6.1.2.1.1.2 Counter 32: 633940314

so I know I am phrasing my request properly.

I am taking the values and writing them to a MYSQL dB, I set the data types in my tale schema, the request is consistent so I know the definition of the OID, so I do not need all the information I am getting back, just the value of the OID itself, so I can write it to my dB without manipulating the the response. I probably can manipulate the response pulling the information to the right of ":" and writing the value of the OID.

I am relatively new to SNMP (http://www.net-snmp.org/), but I can not see why this is not a more commonly asked question because I have been searching everywhere for an answer and this post is my last recourse...

tripleee
  • 139,311
  • 24
  • 207
  • 268
user2179455
  • 77
  • 1
  • 1
  • 9
  • Did you drop a few digits from the "actual response" in your example? It doesn't match up with the rest of the discussion. – tripleee Apr 01 '15 at 09:25
  • Not sure this is a Programming Question. One of the answers is a programming answer, though. =) – Jolta Apr 13 '15 at 11:55

2 Answers2

11

You can tune the output with the -O argument:

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

See the --help:

q:  quick print for easier parsing
v:  print values only (not OID = value)
steffen
  • 13,255
  • 2
  • 36
  • 69
  • To me this is what Stackoverflow is all about; a succint answer to a specific question. `-Oqv` is gold. – Joe Jan 22 '17 at 14:43
0

You can postprocess the output with a simple Awk or sed script, or even just grep (provided you have 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

or

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

or

.... | grep -oP ':\K[0-9]+'
tripleee
  • 139,311
  • 24
  • 207
  • 268