ВАРИАНТЫ ВЫВОДА SNMP. Как получить только значение ответа OID?

Мне нужно просмотреть и собрать несколько OID с некоторых сетевых принтеров с поддержкой SNMP с помощью сценария BASH, над которым я работал.

Мой запрос:

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, я устанавливаю типы данных в своей схеме рассказа, запрос согласован, поэтому я знаю определение OID, поэтому мне не нужна вся информация, которую я получаю, просто значение самого OID, поэтому я могу записать его в свой дБ, не манипулируя ответом. Вероятно, я могу манипулировать ответом, вытаскивая информацию справа от «:» и записывая значение OID.

Я относительно новичок в SNMP (http://www.net-snmp.org/), но Я не понимаю, почему это не более часто задаваемый вопрос, потому что я везде искал ответ, и этот пост - мое последнее обращение...


person user2179455    schedule 01.04.2015    source источник
comment
Вы убрали несколько цифр из фактического ответа в своем примере? Это не совпадает с остальным обсуждением.   -  person tripleee    schedule 01.04.2015
comment
Не уверен, что это вопрос программирования. Однако один из ответов — ответ программирования. знак равно   -  person Jolta    schedule 13.04.2015


Ответы (2)


Вы можете настроить вывод с помощью аргумента -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)
person steffen    schedule 01.04.2015
comment
Для меня это то, что такое Stackoverflow; краткий ответ на конкретный вопрос. -Oqv — золото. - person Joe; 22.01.2017

Вы можете постобработать вывод с помощью простого сценария 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

or

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

or

.... | grep -oP ':\K[0-9]+'
person tripleee    schedule 01.04.2015