私は自分のアプリケーションで SNMP スキャンに統合しようとしており、Google を調べて例などを見つけようとしました。このWeb サイトからの SNMP を使用してデバイスに接続できるようにする SNMPSharpNet DLL に出会いました。
ただし、同様に関連する2つの問題があります。
このWeb サイトを参照して、Cisco Catalyst 2960 スイッチをスキャンしようとするときに使用する oID を判断しようとしましたが、何も返されませんでした (エラーも結果もありません)。正しく動作させる (すべてをプルする) 唯一の方法は、oID 1 を使用することでした。これにより、スイッチからすべてをプルバックするように設定されるため、特定の oID を特定するための参照として使用できます必要なデータ。
これは私の次の質問につながります.... 1のoIDを使用してもうまくいくようですが、途中で「エージェントがエラーで応答しました」というエラーが発生し、実際には何もわかりません。さまざまなデバイスで SNMP を試行するたびに取得しますが、すべてのデータを引き戻すわけではありません。
私のコードは次のようになります。
Sub GetNextResult()
Dim host As String = "xx.xx.xx.xx"
Dim community As String = "public"
Dim requestOid() As String
Dim result As Dictionary(Of Oid, AsnType)
Dim rootOid As Oid = New Oid("1")
Dim nextOid As Oid = rootOid
Dim keepGoing As Boolean = True
requestOid = New String() {rootOid.ToString()}
Dim snmp As SimpleSnmp = New SimpleSnmp(host, community)
snmp.SuppressExceptions = False
If Not snmp.Valid Then
Console.WriteLine("Invalid hostname/community.")
Exit Sub
End If
While keepGoing
result = snmp.GetNext(SnmpVersion.Ver1, New String() {nextOid.ToString()})
If result IsNot Nothing Then
Dim kvp As KeyValuePair(Of Oid, AsnType)
For Each kvp In result
If rootOid.IsRootOf(kvp.Key) Then
Console.WriteLine("{0}: ({1}) {2}", kvp.Key.ToString(), _
SnmpConstants.GetTypeName(kvp.Value.Type), _
kvp.Value.ToString())
nextOid = kvp.Key
Else
keepGoing = False
End If
Next
Else
Console.WriteLine("No results received.")
keepGoing = False
End If
End While
End Sub
私の質問は次のとおりだと思います: 特定の情報に必要なさまざまな oID のリストを取得するために参照できるリファレンスはありますか? または、そうでない場合は、引き続き oID 1 を使用して、一般的なエラーで継続的にエラーが発生する理由を修正できますか?
どんな助けでも感謝します。