見出し画像

自動生成した拡張MIBのソースコードから拡張エージェントを作る

の記事で自動生成したソースコードから拡張エージェントを作る方法の説明です。
元の「実践SNMP教科書」やこの記事で自動生成するソースコードのスタイルとしてUCDスタイルを紹介しました。コードが簡素で扱いやすいのですが、そのまま使うと大きなバグがあるので使わないほうが無難です。今回のサンプルMIBの拡張エージェントを作成するには、NET-SNMPスタイルのほうがよいと思います。

ソースコードの自動生成

前回の記事ではメニューから選ぶ方法を紹介しました。mib2cにはパラメータで生成するコードを指定することができます。ヘルプを見ると

/usr/bin/mib2c [-h] [-c configfile] [-f prefix] mibNode

  -h		This message.

  -c configfile	Specifies the configuration file to use
		that dictates what the output of mib2c will look like.

  -I PATH	Specifies a path to look for configuration files in

  -f prefix	Specifies the output prefix to use.  All code
		will be put into prefix.c and prefix.h

  -d		debugging output (don't do it.  trust me.)

  -S VAR=VAL	Set $VAR variable to $VAL

  -i		Don't run indent on the resulting code

  -s		Don't look for mibNode.sed and run sed on the resulting code

  mibNode	The name of the top level mib node you want to
		generate code for.  By default, the code will be stored in
		mibNode.c and mibNode.h (use the -f flag to change this)

です。-cで設定ファイルを指定して、-fでファイル名を指定できます。
設定ファイルは、/etc/snmp/にあります。

-rw-r--r-- 1 root root  6531 129  2014 /etc/snmp/mib2c.access_functions.conf
-rw-r--r-- 1 root root 37700 129  2014 /etc/snmp/mib2c.array-user.conf
-rw-r--r-- 1 root root  4646 129  2014 /etc/snmp/mib2c.check_values.conf
-rw-r--r-- 1 root root  2391 129  2014 /etc/snmp/mib2c.check_values_local.conf
-rw-r--r-- 1 root root   330 129  2014 /etc/snmp/mib2c.column_defines.conf
-rw-r--r-- 1 root root   602 129  2014 /etc/snmp/mib2c.column_enums.conf
-rw-r--r-- 1 root root   728 129  2014 /etc/snmp/mib2c.column_storage.conf
-rw-r--r-- 1 root root 11942 129  2014 /etc/snmp/mib2c.conf
-rw-r--r-- 1 root root 28202 129  2014 /etc/snmp/mib2c.container.conf
-rw-r--r-- 1 root root  3471 129  2014 /etc/snmp/mib2c.create-dataset.conf
-rw-r--r-- 1 root root  8107 129  2014 /etc/snmp/mib2c.emulation.conf
-rw-r--r-- 1 root root  8498 129  2014 /etc/snmp/mib2c.genhtml.conf
-rw-r--r-- 1 root root  3088 129  2014 /etc/snmp/mib2c.int_watch.conf
-rw-r--r-- 1 root root 22345 129  2014 /etc/snmp/mib2c.iterate.conf
-rw-r--r-- 1 root root 15048 129  2014 /etc/snmp/mib2c.iterate_access.conf
-rw-r--r-- 1 root root   948 129  2014 /etc/snmp/mib2c.mfd.conf
-rw-r--r-- 1 root root  2027 129  2014 /etc/snmp/mib2c.notify.conf
-rw-r--r-- 1 root root  9182 129  2014 /etc/snmp/mib2c.old-api.conf
-rw-r--r-- 1 root root  8777 129  2014 /etc/snmp/mib2c.perl.conf
-rw-r--r-- 1 root root 19509 129  2014 /etc/snmp/mib2c.raw-table.conf
-rw-r--r-- 1 root root  7039 129  2014 /etc/snmp/mib2c.row.conf
-rw-r--r-- 1 root root  4455 129  2014 /etc/snmp/mib2c.scalar.conf
-rw-r--r-- 1 root root 22905 129  2014 /etc/snmp/mib2c.table_data.conf


これを利用して3種類のファイルを作成します。

ここから先は

26,795字 / 3画像
SNMPの仕様について解説した本やサイトは、沢山あると思います。 独自の拡張MIBを自分で設計してMIBファイルやエージェントを作る方法を解説した教科書はないと思います。

20年近く前に書いた「実践SNMP教科書」を現在でも通用する部分だけ書き直して復刻するマガジンです。最近MIBの設計で困っている人に遭遇し…

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