2015-04-01 1 views
0

Je dois passer par et collecter quelques OID de certaines imprimantes réseau compatibles SNMP avec un script BASH sur lequel j'ai travaillé.OPTIONS DE SORTIE SNMP - Comment obtenir la valeur de réponse OID uniquement?

Ma demande:

snmpget -v2c -c public 192.168.0.77 
.1.3.6.1.2.1.1.1 
.1.3.6.1.2.1.1.2 

Ma réponse actuelle:

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

La réponse souhaitée:

1974 
633940314 

(seulement les valeurs OID seulement)

Je regardais et testé plusieurs options s en utilisant la ressource du site ci-dessous:

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

-Oq supprime '=' si en cours d'exécution

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 

retours

.1.3.6.1.2.1.1.1 Counter32: 1974 
.1.3.6.1.2.1.1.2 Counter 32: 633940314 

donc je sais que je suis phrasé ma demande correctement. Je prends les valeurs et les écris à un MYSQL dB, je mets les types de données dans mon schéma, la requête est cohérente pour que je connaisse la définition de l'OID, donc je n'ai pas besoin de toutes les informations que je suis revenir, juste la valeur de l'OID lui-même, donc je peux l'écrire sur mon dB sans manipuler la réponse. Je peux probablement manipuler la réponse en tirant l'information à la droite de ":" et en écrivant la valeur de l'OID.

Je suis relativement nouveau protocole SNMP (http://www.net-snmp.org/), mais je ne vois pas pourquoi ce n'est pas une question plus fréquemment posée parce que je l'ai cherché partout une réponse et ce poste est mon dernier recours ...

+0

Avez-vous supprimé quelques chiffres de la "réponse actuelle" dans votre exemple? Cela ne correspond pas au reste de la discussion. – tripleee

+0

Vous ne savez pas s'il s'agit d'une question de programmation. Une des réponses est une réponse de programmation, cependant. =) – Jolta

Répondre

4

Vous pouvez régler la sortie avec l'argument -O:

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

Voir la --help:

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

C'était l'option -Oqv qui a fait l'affaire, merci – user2179455

+0

Pour moi c'est ce que Stackoverflow est à propos de; une réponse succinte à une question spécifique. '-Oqv' est de l'or. – Joe

0

Vous pouvez post-traiter la sortie avec un simple script Awk ou sed, ou même simplement grep (à condition d'avoir 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 

ou

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

ou

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