예제 #1
0
def main():
    snmp_action = jcs.get_snmp_action()
    snmp_oid = jcs.get_snmp_oid()
    jcs.syslog("8", "snmp_action = ", snmp_action, " snmp_oid = ", snmp_oid)
    if snmp_action != 'get':
        return
    if not snmp_oid.startswith(BASE_OID):
        return
    index = int(snmp_oid[len(BASE_OID) + 1:])
    if index not in SCRIPT_XPATH:
        return
    with Device() as dev:
        conf = dev.rpc.get_config()
    count_scripts = len(conf.xpath(SCRIPT_XPATH[index]))
    jcs.emit_snmp_attributes(snmp_oid, "Integer32", str(count_scripts))
def main():
    snmp_action = jcs.get_snmp_action()
    snmp_oid = jcs.get_snmp_oid()

    jcs.syslog("8", "snmp_action = ", snmp_action, " snmp_oid = ", snmp_oid)

    if snmp_action == 'get':
        if snmp_oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1':
            jcs.emit_snmp_attributes(snmp_oid, "Integer32", "10")
        elif snmp_oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1.1':
            jcs.emit_snmp_attributes(snmp_oid, "Integer32", "211")
    elif snmp_action == 'get-next':
        if snmp_oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1':
            jcs.emit_snmp_attributes(".1.3.6.1.4.1.2636.13.61.1.9.1.1.1",
                                     "Integer32", "211")
        elif snmp_oid == '.1.3.6.1.4.1.2636.13.61.1.9.1.1.1':
            jcs.emit_snmp_attributes(".1.3.6.1.4.1.2636.13.61.1.9.1.1.2",
                                     "Integer32", "429")
예제 #3
0
def main():
    snmp_action = jcs.get_snmp_action()
    snmp_oid = jcs.get_snmp_oid()

    #jcs.enable_debugger()
    # invoke lwaftr stats
    populate_stats()

    # log operation, oid
    message = "snmp_action: "
    message += snmp_action
    message += ", oid: "
    message += snmp_oid
    #jcs.syslog("external.info", message)


    """
    if (lwaftr_statistics_dict.size() == 0):
        #fill null
        #return jcs.emit_snmp_attributes(snmp_oid, None, None)
        return
    """
    if (snmp_action == "get"):
        operation = SNMP_GET
    elif (snmp_action == "get-next"):
        operation = SNMP_GETNEXT

    oid_list = snmp_oid.split(".")
    oid_list_len = len(oid_list)

    leaf = None
    instance_id = None
    protocol = None
    table_type = LW4OVER6_STAT_TABLE

    if (oid_list_len > 11):
        table_type = oid_list[11]
        table_type = int(table_type)

        if (table_type > LW4OVER6_INSTANCE_TABLE):
            return None
        if (table_type < LW4OVER6_STAT_TABLE):
            table_type = LW4OVER6_STAT_TABLE

    #.1.3.6.1.4.1.2636.1.7.151.1.1.<leaf>
    if (oid_list_len > 13):
        leaf = oid_list[13]
        leaf = int(leaf)


    message = "Table type " + str(table_type)
    #jcs.syslog("external.info", message)

    message = "Leaf value " + str(leaf)
    #jcs.syslog("external.info", message)

    if (oid_list_len > 14):
        instance_id = oid_list[14]
        instance_id = int(instance_id)

    if (table_type == LW4OVER6_STAT_TABLE):
        if (oid_list_len > 15):
            protocol = oid_list[15]
            protocol = int(protocol)
			
    if (table_type == LW4OVER6_STAT_TABLE and operation == SNMP_GETNEXT):
        (recv_leaf, recv_instance, recv_protocol, value) = snmp_getnext_value(leaf, instance_id, protocol)
        if (value is None):
            table_type = LW4OVER6_INSTANCE_TABLE
            instance_id = None
            leaf = None

    if (table_type == LW4OVER6_STAT_TABLE):
        message = "Parameters "
        if (leaf):
            message += "leaf: " + str(leaf)
        if (instance_id):
            message += " instance_id: " + str(instance_id)
        if (protocol):
            message += " protocol: " + str(protocol)
        #jcs.syslog("external.info", message)

        if (operation == SNMP_GET):
            #jcs.syslog("external.info", "get request")
            value = snmp_get_value(leaf, instance_id, protocol)
            if (value is None):
                jcs.syslog("external.info", "No entry available")
                return
            value = str(value)
            message = "value: " + value
            if (leaf == LWAFTR_INSTANCENAME):
                #message = message + " " + snmp_oid
                #jcs.syslog("external.info", message)
                return jcs.emit_snmp_attributes(snmp_oid, "string", value)
            else:
                return jcs.emit_snmp_attributes(snmp_oid, "Counter64", value)
        elif (operation == SNMP_GETNEXT):
            (recv_leaf, recv_instance, recv_protocol, value) = snmp_getnext_value(leaf, instance_id, protocol)
            if (value is None):
                jcs.syslog("external.info", "No entry available")
                return None;
            else:
                #jcs.syslog("external.info", value)
                pass
            #message = "Returning OID name: "
            oid_name = lw4overmib_table_oid + "." + str(recv_leaf) + "." + str(recv_instance) + "." + str(recv_protocol)
            #message += oid_name
            #jcs.syslog("external.info", message)
            if (recv_leaf == LWAFTR_INSTANCENAME):
                return jcs.emit_snmp_attributes(oid_name, "string", value)
            else:
                return jcs.emit_snmp_attributes(oid_name, "Counter64", value)
        else:
            jcs.syslog("external.info", "Unexpected SNMP operation")
        return
    else:
        message = "Parameters "
        if (leaf):
            message += "leaf: " + str(leaf)
        if (instance_id):
            message += " instance_id: " + str(instance_id)
        #jcs.syslog("external.info", message)

        if (operation == SNMP_GET):
            #jcs.syslog("external.info", "get request")
            value = snmp_get_instance_value(leaf, instance_id)
            if (value is None):
                jcs.syslog("external.info", "No entry available")
                return
            value = str(value)
            message = "value: " + value
            if (leaf == LWAFTR_INSTANCE_TABLE_NAME):
                #message = message + " " + snmp_oid
                #jcs.syslog("external.info", message)
                return jcs.emit_snmp_attributes(snmp_oid, "string", value)
            else:
                return jcs.emit_snmp_attributes(snmp_oid, "Counter64", value)
        elif (operation == SNMP_GETNEXT):
            (recv_leaf, recv_instance, value) = snmp_getnext_instance_value(leaf, instance_id)
            if (value is None):
                jcs.syslog("external.info", "No entry available")
                return None;
            else:
                #jcs.syslog("external.info", value)
                pass
            #message = "Returning OID name: "
            oid_name = lw4overmib_instance_table_oid + "." + str(recv_leaf) + "." + str(recv_instance)
            #message += oid_name
            #jcs.syslog("external.info", message)
            if (recv_leaf == LWAFTR_INSTANCE_TABLE_NAME):
                return jcs.emit_snmp_attributes(oid_name, "string", value)
            else:
                return jcs.emit_snmp_attributes(oid_name, "Counter64", value)
        else:
            jcs.syslog("external.info", "Unexpected SNMP operation")
        return