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");