0

Ubuntu Linux の C++ アプリケーション コードに net-snmp agentx サブエージェントを組み込みました。一度動作する agentx サブエージェントを無効にしてから、再度有効にしたいと考えています。エージェントをセットアップし、コマンド ラインから snmpget を使用して mib をポーリングし、snmp_shutdown を使用して agentx ソケット接続を無効にすることはできますが、無効にしたソケット接続を再度有効にすることはできません。

ヘルプ/ポインタに感謝します。

次のコードを使用して、SNMP ライブラリと agentx ソケット接続を初期化します。

最初に、AgentX サブエージェントを初期化します -

netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 120);
        netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET, m_agentx_socket.c_str());


/* initialize the agent library */
init_agent("MyApp");
// initialise MIB module
init_snmp("MyApp");

snmpget を使用して MIB をポーリングし、以下の関数を使用して接続を無効にします -

snmp_shutdown("MyApp");
SOCK_CLEANUP;

これまでのところ正常に動作します。

次に、以下のコードを使用して接続を再度有効にしますが、これは機能しません。

netsnmp_ds_set_boolean(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_ROLE, 1);
        netsnmp_ds_set_int(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_AGENTX_PING_INTERVAL, 120);
        netsnmp_ds_set_string(NETSNMP_DS_APPLICATION_ID, NETSNMP_DS_AGENT_X_SOCKET, m_agentx_socket.c_str());


/* initialize the agent library */
init_agent("MyApp");
init_snmp("MyApp");
4

2 に答える 2

0

シャットダウンした後、バイナリ自体を再実行する必要があると思います。ここでは、agentx を再起動する理由を明確にしていません。一部のデータを頻繁に取得するためにこれを行っている場合。コードで期間のスリープコマンドを使用して無限ループを試すことができると思います。これはより良いオプションになります。

于 2012-10-05T11:12:42.640 に答える