int main(int argc, char ** argv) { struct snmp_session session; 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; struct tree * mib_tree; /*********************/ if(argv[1] == NULL){ printf("Please supply a hostname\n"); exit(1); } init_snmp("Main check"); snmp_sess_init( &session ); session.version = SNMP_VERSION_1; session.community = "public"; session.community_len = strlen(session.community); session.peername = argv[1]; sess_handle = snmp_open(&session); add_mibdir("."); mib_tree = read_mib("mibs/SNMPv2-MIB.txt"); pdu = snmp_pdu_create(SNMP_MSG_GET); read_objid("SNMPv2-MIB::sysDescr.0", id_oid, &id_len); snmp_add_null_var(pdu, id_oid, id_len); read_objid("SNMPv2-MIB::sysObjectID.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); snmp_close(sess_handle); return (0); }
int main(int argc, char * argv[]){ returncode = 0; int status; struct tree * mib_tree; if(argv[1] != NULL && strcmp("-h", argv[1]) == 0 || strcmp("--help", argv[1]) == 0){ PrintHelp(); return 0; } if(argv[1] == NULL || argv[2] == NULL || argv[3] == NULL || argv[4]== NULL) { printf("Argument invalide (hostname, variable, warning, critical)\n"); } snmp_sess_init(&session); session.version = SNMP_VERSION_1; session.community = "public"; session.community_len = strlen(session.community); session.peername = argv[1]; session_handle = snmp_open(&session); add_mibdir("/usr/share/snmp/mibs/"); pdu = snmp_pdu_create(SNMP_MSG_GET); char variable[50]; snprintf(variable, 50, argv[2]); if(strcmp("CPULOAD", variable) == 0){ processSnmpGet("NETWORK-APPLIANCE-MIB::cpuBusyTimePerCent.0"); int result = atoi(resultString + 2); if(result >= atoi(argv[4])){ returncode = 2; } else if (result >= atoi(argv[3])){ returncode = 1; } printf("CPU Load : %d %% | cpu_load=%d %%\n", result, result); } else if(strcmp("PS", variable) == 0){ processSnmpGet("NETWORK-APPLIANCE-MIB::envFailedPowerSupplyCount.0"); int result = atoi(resultString); if(result >= atoi(argv[4])){ returncode = 2; } else if (result >= atoi(argv[3])){ returncode = 1; } printf("Failed Power Supply : %d\n", result); } else if(strcmp("FAN", variable) == 0){ processSnmpGet("NETWORK-APPLIANCE-MIB::envFailedFanCount.0"); int result = atoi(resultString); if(result >= atoi(argv[4])){ returncode = 2; } else if (result >= atoi(argv[3])){ returncode = 1; } printf("Failed FAN : %d\n", result); } else if(strcmp("TEMP", variable) == 0){ processSnmpGet("NETWORK-APPLIANCE-MIB::envOverTemperature.0"); int result = atoi(resultString); if(result == 2){ returncode = 2; printf("Over Temperatur : YES"); } else{ printf("Over Temperatur : NO"); } } else if(strcmp("NVRAM", variable) == 0){ processSnmpGet("NETWORK-APPLIANCE-MIB::nvramBatteryStatus.0"); int result = atoi(resultString); if(result > 1){ returncode = 2; } printf("NVRAM battery status: %d\n", result); } else{ printf("Invalid argument"); freeSession(); return 3; } freeSession(); return returncode; }