2

現在、他のプログラムから GET/WALK SNMP クエリを簡単に送信するために、PySnmp に基づく Python 3 (Python 3.1.3) の SNMP モジュールに取り組んでいます。これは主に楽しみ/学習用です。

既存の OID を照会すると、次のようなタプルが得られます。

(ObjectName(1.3.6.1.2.1.1.7.0), Integer(72))

「for」構文を使用して読み取ることができます。

ただし、存在しない OID をクエリすると (これは単体テストで行うことです)、次のようになります。

(ObjectName(2.3.4.5.6.7.8), NoSuchObject('b'''))

タプルの 2 番目の要素が integer/string/(other?) である「通常」のケースと、この 2 番目の要素が 'NoSuchObject' である「エラー」のケースを区別するにはどうすればよいですか?

4

2 に答える 2

1

もう 1 つの方法は、noSuchObject の ASN.1 タイプと SNMP 応答の var-bind タプルの値の部分を一致させることです。

>>> from pysnmp.proto import rfc1905
>>> rfc1905.noSuchObject.isSameTypeWith(rfc1905.noSuchObject)
True
>>> rfc1905.noSuchObject.isSameTypeWith(rfc1905.noSuchInstance)
False
>>> rfc1905.noSuchObject.isSameTypeWith(varBind[1]) # varBind from SNMP response
False
于 2013-04-24T05:53:31.097 に答える