3

このチュートリアルに従って、独自の MIB モジュールを snmp エージェントに追加しようとしています : http://www.net-snmp.org/wiki/index.php/TUT:Writing_a_MIB_Moduleすべてを二重にチェックし、非常に長い時間を検索しましたが、問題を解決するのに何も役に立ちませんでした!

net-snmp バージョン 5.7.3 を使用しています

次のコードを net-snmp/agent/mibgroup ディレクトリに実装しました。

#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include "nstAgentModuleObject.h"

/*
* the variable we want to tie an OID to.  The agent will handle all
** GET and SET requests to this variable changing it's value as needed.
*/

static long nstAgentModuleObject = 42;

/*
* our initialization routine, automatically called by the agent 
* (to get called, the function name must match init_FILENAME()) 
*/
void
init_nstAgentModuleObject(void)
{
static oid      nstAgentModuleObject_oid[] =
    { 1, 3, 6, 1, 4, 1, 8072, 2, 4, 1, 1, 1, 0 };

/*
 * a debugging statement.  Run the agent with -DnstAgentModuleObject to see
 * the output of this debugging statement. 
 */
DEBUGMSGTL(("nstAgentModuleObject",
            "Initializing the nstAgentModuleObject module\n"));


/*
 * the line below registers our variables defined above as
 * accessible and makes it writable.  A read only version of any
 * of these registration would merely call
 * register_read_only_int_instance() instead.  The functions
 * called below should be consistent with your MIB, however.
 */

DEBUGMSGTL(("nstAgentModuleObject",
            "Initalizing nstAgentModuleObject scalar integer.  Default value = %d\n",
            nstAgentModuleObject));

netsnmp_register_long_instance("nstAgentModuleObject",
                              nstAgentModuleObject_oid,
                              OID_LENGTH(nstAgentModuleObject_oid),
                              &nstAgentModuleObject, NULL);

DEBUGMSGTL(("nstAgentModuleObject",
            "Done initalizing nstAgentModuleObject module\n"));
}

./configure --with-mib-modules="nstAgentModuleObject" を実行した後、make と make install を実行しました。したがって、nstAgentModuleObject は snmpd エージェントに統合する必要があります。

関連する MIB NET-SNMP-TUTORIAL-MIB は、/usr/local/snmp/mbis および /~/.snmp/mibs に保存されます。

MIB が正しくロードされるように、mib +ALL を snmpd.conf に追加しました。また、別の .conf が読み込まれた場合に備えて、export MIBS=+all を使用しましたが、そうではありません。

次のコマンドを使用すると、以下に示す結果が得られます。

snmptranslate -Of NET-SNMP-TUTORIAL-MIB:nstAgentModuleObject
.iso.org.dod.internet.private.enterprises.netSnmp.netSnmpExamples.netSnmpTutorialMIB.nstMIBObjects.nstAgentModulesObject

snmptranslate -On NET-SNMP-TUTORIAL-MIB:nstAgentModuleObject
.1.3.6.1.4.1.8072.2.4.1.1.1

ここで、指定された OID で snmpget を実行すると、このエラーが発生します (スカラーであるため、最後に 0 を追加します。それがなくても同じエラーが発生します)。

snmpget -v2c -c public localhost .1.3.6.1.4.1.8072.2.4.1.1.1.0
NET-SNMPEXAMPLES-MIB::netSnmpExamples.4.1.1.1.0 = No Such Object availaible on this agent at this OID 

MIB モジュールがエージェントに適切に組み込まれていないようですが、その理由がわかりません。

同じ質問が以前ここに投稿されたことは知っていますが、回答がありませんでした。 !

4

1 に答える 1