私が正常に地元のsnmpdからいくつかの単純なSNMP値を読み取るために、次の使用しました:netsnmp_query_walk()またはnetsnmp_query_get()はどのように使用しますか?
snmp_open(&session)
snmp_pdu_create(SNMP_MSG_GET);
snmp_add_null_var(pdu, oid, len); // multiple lines like this
snmp_sync_response(ss, pdu, &response);
for (netsnmp_variable_list *vars = response->variables; vars; vars = vars->next_variable)
{
// look at vars->name, vars->name_length, and vars->val.integer
}
これはいくつかの簡単な整数スカラーのために動作しますが、私はまた私が読む必要があるいくつかのテーブルを持っています。 snmp_add_null_var()でテーブルのOIDとテーブルエントリのoidの両方を試しましたが、snmp_sync_response()はOIDが見つからないことを示すエラーコードを返します。
ヘッダーファイルを参照すると、私はこれらの呼び出しに遭遇しました。私はこれらの一つは、私が使用しているしたいものである可能性が高い疑う:
netsnmp_query_walk()
netsnmp_query_get()
しかし、私はそれらを使用する方法を見つけ出すことはできません。
netsnmp_variable_list *vb = (netsnmp_variable_list*)SNMP_MALLOC_TYPEDEF(netsnmp_variable_list);
if (vb == NULL) ...
snmp_set_var_objid(vb, oid, len);
int rc = netsnmp_query_walk(vb, ss);
//int rc = netsnmp_query_get(vb, ss);
...しかし、この時点で、RCは== -1、私は推測しているときにエラーが発生したことを意味し、常に次のとおりです。これは私が試したものです。これらをどうやって使うのですか、それとももっと良いAPIがありますか?