.netのクラスライブラリになかったのね
極々簡単な(GETしかしない)SNMPマネージャの作成を検討してて、最初はWMIのSNMP機能で出来るやろ?と思っていたんですが、WMIは対Windowsしか接続出来ないようにみえました…(出来るのかわからなかった)
他の手段を探していくつか見つけたのでメモしておきます。
UDP使ってGet部分だけでも実装する
C#でASN.1のObject Identifierのエンコードを行う
この方のこの一連のシリーズの投稿を参考にGet出来るまで自力コーディングする方法。
学習にはなるけどそこまでではない(ない)
nugetからLextm.SharpSnmpLibをDLして使う
nuget探すといくつか出てくるんですが、これはMITライセンスで使えます。簡単なサンプルはgithubにあるのでそれ見るとすぐ出来ました。
SNMP周りをガッツリやるならコレはめっちゃ便利そうです。
OLEPRNLib
COMコンポーネントを使う方法。GETするだけだったので今回はこれを採用しました。
最初に見かけたのがWindows標準機能だけでsnmpgetする(PowerShell)
でpowershellだったのですが、COMコンポーネントなら使えるのでは?というのがきっかけ。
参照設定でoleprn 1.0 Type Libraryを追加します
以下のように使います。
var snmp = new OLEPRNLib.SNMP();
snmp.Open("127.0.0.1", "public", 3, 10000);
var result = snmp.GetAsByte("1.3.6.1.2.1.1.5");