見出し画像

TWSNMP開発日誌:モバイル版のSNMP TRAP送信テスト機能ができた

浦和レッズ 残念!
切り替えるために今朝は5時から音楽を聞きながら開発に集中しました。
昨日、悩んだsyslogの送信フォーマットの問題は、正式なIETF形式の他にTWSNMP FCで認識できるフォーマットを追加しました。

TWSNMP FCが正式なIETF形式を認識できない問題は夏休みの宿題として後で考えることにしました。

今朝は、SNMPのTRAPパケットを送信するサーバーテスト機能を作りました。
モバイル版で使っているSNMPのパッケージ

には、TRAPを送信する機能はありません。そこで、このパッケージを使ってTRAPパケットを組み立ててsyslogで習得した方法でUDPパケットの送信を行うようにしました。

     final List<Varbind> vbl = [];
      vbl.add(Varbind(Oid.fromString(_mibdb!.nameToOid("sysUpTime.0")), VarbindType.TimeTicks, (DateTime.now().microsecondsSinceEpoch - _startTime) ~/ 10));
      vbl.add(Varbind(Oid.fromString(_mibdb!.nameToOid("snmpTrapOID")), VarbindType.Oid, _mibdb!.nameToOid(_trapOID)));
      vbl.add(Varbind(Oid.fromString(_mibdb!.nameToOid("snmpTrapEnterprise")), VarbindType.Oid, _mibdb!.nameToOid("enterprises.17861")));
      var p = Pdu(PduType.TrapV2, DateTime.now().millisecondsSinceEpoch, vbl);
      var m = Message(SnmpVersion.V2c, _trapCommunity, p);
      int port = 162;
      String ip = _target;
      var sender = await UDP.bind(Endpoint.any());
      print("trap");
      final len = await sender.send(m.encodedBytes, Endpoint.unicast(InternetAddress(ip), port: Port(port)));
 

のようなコードで送信できました。

パケットも確認しました。

TWSNMP FCでも受信できました。

この機能を作って、そういえばSNMPの企業番号を取得したことを思い出しました。

https://www.iana.org/assignments/enterprise-numbers/enterprise-numbers

の17861番でした。
TRAPの送信試験のパケット使うことにしました。

DHCPのテスト機能を付けてサーバーテスト機能は終わりと思いましたが、昨日、昼ごはんを食べている時にメールサーバーのテストもつけようと思いました。なので、あと2つです。

明日に続く

開発のための諸経費(機材、Appleの開発者、サーバー運用)に利用します。 ソフトウェアのマニュアルをnoteの記事で提供しています。 サポートによりnoteの運営にも貢献できるのでよろしくお願います。