2009年10月29日木曜日

Net-SNMPの設定をいじる

SNMPのクエリに応答するために、Solaris10に標準で入っているNet-SNMPの設定を変えました。
いちばん苦労したのは、snmpd.confのありかを見つけることです。Linux系のサイトに書いてある場所を探しても、ぜんぜんありません。(さらに悲しいことに、「/etc/snmp/conf/snmpd.confだよ」と書いてあるサイトがあって、確かにファイルは存在したのですが、編集しても何の変化もありません。削除しても平気だったので、見られてなかったのですね。 orz)

で、正解は、
/etc/sma/snmp/snmpd.conf
です。ここを変えて、snmpdにHUPを送ると、設定が変わります。

(そもそもですが、わたくしのSolaris10サーバでは、最初からsnmpdが動いています。killしてもよみがえるので、たぶんsvcadmから起動しているようです。でも、どの項目で立ち上げているのかわかりません。snmpdxとは、別物のようです。)

次に設定変更の方ですが、これは、snmpd.confにexecというディレクティブを追加するだけなので、簡単です。
詳しい説明は、このへん見てください。
http://www.itmedia.co.jp/help/howto/linux/0007master/06/21.html

自分が作ったものの例だけ書いておきます。

snmpd.conf に追加

exec 1.3.6.1.4.1.xxx.101 test /bin/echo hello world

bash-3.00# kill -HUP 1406
bash-3.00# snmpwalk -c public -v 1 localhost .1.3.6.1.4.1.xxx
SNMPv2-SMI::enterprises.xxx.101.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.xxx.101.2.1 = STRING: "test"
SNMPv2-SMI::enterprises.xxx.101.3.1 = STRING: "/bin/echo hello world"
SNMPv2-SMI::enterprises.xxx.101.100.1 = INTEGER: 0
SNMPv2-SMI::enterprises.xxx.101.101.1 = STRING: "hello world"
SNMPv2-SMI::enterprises.xxx.101.102.1 = INTEGER: 0
bash-3.00#

と、このようにうまくいきます。
(OIDのxxxのところは、会社のコードが入ります。数字です。)

1つだけ気になるのは、execディレクティブの設定で、OIDを明示的に指定すると、STRINGが""で区切られて出てくることです。指定しないと、Net-SNMPのOID"1.3.6.1.4.1.2021.8"になるのですが、この場合は区切られません。
マネージャでちゃんと認識されるかなぁ?