2017-10-08 8 views
0

tout le monde. Je suis nouveau à snmp et confronté au problème suivant. J'ai une table snmp sur l'agent. Cela fonctionne seulement avec flag -Cb (demande une nouvelle ligne par la commande getnext). Quand j'utilise net-snmp int ubuntu, je reçois cette table.L'agent SNMP obtient la table échoue (getnext n'incrémente pas)

enter image description here

Comment ça fait en java snmp4j: il est effectué par étape par étape obtenir chaque ligne en envoyant la demande getnext. Mais au lieu de pointer la table OID, je pointe les OID de la colonne que je veux obtenir. getnext renvoie le résultat et l'OID incrémenté suivant qui sera dans la prochaine requête. Comme j'ai fait des recherches, au cours de snmpgetnext requête ne reçoit pas de valeur incrémentielle. Je reçois les "OID retournés à partir d'un GETNEXT ou GETBULK sont inférieurs ou égaux à celui demandé (ce qui n'est pas autorisé par SNMP)". Donc je ne peux pas l'obtenir là. Je suppose que net-snmp évite cette erreur en effectuant un incrément interne lors de l'obtention de cette erreur.

J'ai également essayé de faire getnext manuellement via net-snmp dans ubuntu au lieu de snmptable, mais certaines colonnes n'ont que la première valeur incrémentée et c'est, certaines ne s'incrémentent pas du tout.

Mais snmpget sur la valeur accrue fonctionne

enter image description here

Est-ce un bug sur agent snmp? Donc net-snmp incrémenter par lui-même lors de l'obtention de la table snmp?

+0

Veuillez ne pas publier de données en tant que captures d'écran. Au lieu de cela, modifiez votre question: copiez et collez le texte de votre terminal, et postez-le comme texte dans votre question. Lorsque vous utilisez des captures d'écran sur des sites externes, la question deviendra impossible à comprendre si ce site externe tombe en panne. – Jolta

Répondre

0

En effet, il me semble que vous avez un agent SNMP bogué entre vos mains. Vous devez le signaler au fournisseur de l'agent. Les données de votre première capture d'écran devraient constituer une preuve suffisante pour qu'elles puissent être considérées comme un rapport de bogue.

Le comportement correct est spécifié pour SNMPv1 dans RFC 1157 section 4.1.3 et quelques autres RFC pour les versions SNMP suivantes. Cependant, l'essentiel de celui-ci reste le même dans v2 et v3.

Je ne sais pas comment fonctionne la commande snmptable, mais il pourrait essayer de deviner l'OID successeur comme vous dites, mais plus probablement snmptable utilise SNMP GetBulkRequest-PDUs en arrière-plan, et la mise en œuvre de l'agent de GetBulk est mieux que son GetNext. C'est à dire. le bogue de traversée de table n'est pas présent dans le code qui gère GetBulk, ce qui vous donne la table entière. Essayez de traverser la table avec le snmpwalk, qui je pense n'utilise que l'opération GetNext. Ma conjecture est que le snmpwalk s'arrêtera ou boucle, comme votre commande snmpgetnext!