0
netsnmpを使ってCでsnmpbulkwalkを作成することは可能ですか?snmpbulkwalk in c
snmpgetコマンドは非常に簡単です - しかし、私はsnmpbulkwalkを送信する例を見つけることができません...ここで
はsnmpgetコマンドのために少しの例である:
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <string.h>
int snmp_get(struct snmp_session *sess_handle){
struct snmp_pdu *pdu;
struct snmp_pdu *response;
struct variable_list *vars;
oid id_oid[MAX_OID_LEN];
oid serial_oid[MAX_OID_LEN];
size_t id_len = MAX_OID_LEN;
size_t serial_len = MAX_OID_LEN;
int status;
pdu = snmp_pdu_create(SNMP_MSG_GET);
read_objid("SNMPv2-MIB::sysName.0", id_oid, &id_len);
snmp_add_null_var(pdu, id_oid, id_len);
read_objid(".1.3.6.1.2.1.1.3.0", serial_oid, &serial_len);
snmp_add_null_var(pdu, serial_oid, serial_len);
status = snmp_synch_response(sess_handle, pdu, &response);
for(vars = response->variables; vars; vars = vars->next_variable)
print_value(vars->name, vars->name_length, vars);
snmp_free_pdu(response);
return status;
}
struct snmp_session *setup_snmp_session(int version, char* community, char* host){
struct snmp_session session;
struct snmp_session *sess_handle;
init_snmp("poller");
snmp_sess_init(&session);
session.version = version;
session.community = community;
session.community_len = strlen(session.community);
session.peername = host;
sess_handle = snmp_open(&session);
return sess_handle;
}
int main(int argc, char ** argv)
{
if(argv[1] == NULL){
printf("Please supply a hostname\n");
exit(1);
}
struct snmp_session *sess_handle=setup_snmp_session(SNMP_VERSION_2c,"asdf",argv[1]);
snmp_get(sess_handle);
snmp_close(sess_handle);
return (0);
}
私は同じものを探しています - ちょうどsnmpbulkwalkをやって!あなたの助けのために Thx!
BR、 roegi
snmpbulkgetの例のThx! 私はその間に同様のことを実装しましたが、これはまずは素晴らしい例です! – roegi