Esempio n. 1
0
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;
}