1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
int main(int argc, char** argv)
{
struct snmp_session session;
struct snmp_session* session_handler = NULL;
struct snmp_pdu* pdu = NULL;
oid name[MAX_OID_LEN];
size_t name_length;
int status;
long sysuptime;
char csysuptime[20];
char* uptime;
init_snmp("snmptrap");
snmp_sess_init(&session);
session.version = SNMP_VERSION_2c;
session.community = (u_char*)"public";
session.community_len = strlen((char*)session.community);
session.peername = "127.0.0.1";
session_handler = snmp_open(&session);
if(session_handler == NULL)
{
snmp_sess_perror("snmptrap", &session);
LOGGER_ERROR("Bad Handler");
}
pdu = snmp_pdu_create(SNMP_MSG_TRAP2);
if (!pdu)
{
snmp_sess_perror("snmptrap", &session);
LOGGER_ERROR("Failed to create notification PDU!");
}
sysuptime = get_uptime();
sprintf(csysuptime, "%ld", sysuptime);
uptime = csysuptime;
if(snmp_add_var(pdu, objid_sysuptime, sizeof(objid_sysuptime) / sizeof(oid), 't', uptime) != 0)
{
snmp_perror(uptime);
LOGGER_ERROR("Uptime!");
}
if(snmp_add_var(pdu, objid_snmptrap, sizeof(objid_snmptrap) / sizeof(oid), 'o', "1.2.3") != 0)
{
snmp_perror("1.2.3");
LOGGER_ERROR("Bad OID!");
}
name_length = MAX_OID_LEN;
if(!snmp_parse_oid("1.2.3.4", name, &name_length))
{
snmp_perror("1.2.3.4");
LOGGER_ERROR("Bad Parsing!");
}
if(snmp_add_var(pdu, name, name_length, 's', "coucou") != 0)
{
snmp_perror("coucou");
LOGGER_ERROR("Bad Value!");
}
status = snmp_send(session_handler, pdu) == 0;
if(status)
{
snmp_sess_perror("snmptrap", session_handler);
}
/* snmp_free_pdu(pdu);*/
snmp_close(session_handler);
snmp_shutdown("snmptrap");
return EXIT_SUCCESS;
} |
Partager