2017-01-27 9 views
0

SNMPについては私の知るところでは覚えていますが、私は学んでいます。私はプリンタからデバイス名を取得しようとしています。 私は '1.3.6.1.2.1.1.5.0' OIDを取得します。しかし、それには多くの追加情報があり、それはある種のラッパーだと思っていますが、どのようにラップするのかわかりません。ここでSNMPの結果をアンラップ/解析する必要があります

は私のget

varBinds=[ObjectType(ObjectIdentity(ObjectName('1.3.6.1.2.1.1.5.0')), DisplayString(b'OFHP1', subtypeSpec=ConstraintsIntersection(ConstraintsIntersection(ConstraintsIntersection(ConstraintsIntersection(), ValueSizeConstraint(0, 65535)), ValueSizeConstraint(0, 255)), ValueSizeConstraint(0, 255))))] 

の結果は、プリンタ名がOFHP1です。それが私が必要なものすべてです。これを解くコマンドがありますか、それともブルートフォースで解析する必要がありますか?

答えて

0

SNMPに関しては、通常、いわゆる可変バインディングまたはOID値ペアを扱います。これは、概念上、他のアプリケーションで発生するかもしれないキーと値のペアに似ています。

あなたのvarBindsはオブジェクトのリストですので、各オブジェクトはケットと値のペアを表します。

さて、SNMPの値が入力されたと拘束されている
varBind = varBinds[0] # first var-bind 
oid, value = varBind # unpack var-bind into OID and value 

は(彼らが実際にASN.1タイプです):あなたが必要とするコンポーネントにそれをダウントラバースする必要がある値を取得します。そのため、それらは基本的なPython型ではなく、特殊なオブジェクトです。しかし、あなたが持っている余分な情報を取り除き、任意のSNMPスカラーから純粋なPython文字列(またはint)を得ることができます:

py_value = str(value)   # turn SNMP value object into Python str 
py_value = value.prettyPrint() # turn SNMP value object into a MIB-guided, human friendly representation 
+0

完璧な、ちょうど私が必要なもの。 – turboc

関連する問題