Posted at

C#で簡単にSNMP getする方法


.netのクラスライブラリになかったのね

 極々簡単な(GETしかしない)SNMPマネージャの作成を検討してて、最初はWMIのSNMP機能で出来るやろ?と思っていたんですが、WMIは対Windowsしか接続出来ないようにみえました…(出来るのかわからなかった)

 他の手段をさがしていくつか見つけたのでメモしておきます。


UDP使ってでGet部分だけでも実装する

C#でASN.1のObject Identifierのエンコードを行う

この方のこの一連のシリーズの投稿を参考にGet出来るまで自力コーディングする方法。


nugetからLextm.SharpSnmpLibをDLして使う

Lextm.SharpSnmpLib

nuget探すといくつか出てくるんですが、これはMITライセンスで使えます。簡単なサンプルはgithubにあるのでそれ見るとすぐ出来ました。


OLEPRNLib

 COMコンポーネントを使う方法。

最初に見かけたのがWindows標準機能だけでsnmpgetする(PowerShell)

でpowershellだったのですが、COMコンポーネントなら使えるのでは?というのがきっかけ。

参照設定でoleprn 1.0 Type Libraryを追加します

コメント 2019-10-01 102413.png

以下のように使います。


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");