Exemple #1
0
    def create_object_identity(self, **kwargs):
        """
        :param
            oid: **REQUIRED** OID or MibSymbol
            value: **OPTION** value for snmp set
        :return: ObjectIdentity
        """
        t.log("DEBUG", "Entering 'create_object_identity'\n"+__file__)
        oid = kwargs.get('oid')
        value = kwargs.get('value')
        oidre = re.match(r'(.*)::(.*)\.(.*)', oid)
        mib_name = ''
        oid_name = ''
        if oidre:
            mib_name = oidre.group(1)
            oid_name = oidre.group(2)
            oid_index = oidre.group(3)
            object_identity = ObjectIdentity(
                mib_name, oid_name, oid_index).addAsn1MibSource(self.mibs_dir)
        else:
            oidre = re.match('(.*)::(.*)', oid)
            if oidre:
                mib_name = oidre.group(1)
                oid_name = oidre.group(2)
                object_identity = ObjectIdentity(mib_name, oid_name).addAsn1MibSource(self.mibs_dir)

        if re.match(r'^([0-9]*\.)*[0-9]*$', oid):
            object_identity = ObjectIdentity(oid).addAsn1MibSource(
                self.mibs_dir)
        elif re.match(r'^([a-z A-Z 0-9 \-]*\.)*[a-z A-Z 0-9 \-]*$', oid):
            from pysnmp.smi import builder, view
            mibbuilder = builder.MibBuilder()
            mibviewcontroller = view.MibViewController(mibbuilder)
            objectidentity1 = ObjectIdentity(oid)
            objectidentity1.resolveWithMib(mibviewcontroller)
            oid = '.'.join(map(str, objectidentity1.getOid().asTuple()))
            object_identity = ObjectIdentity(oid).addAsn1MibSource(
                self.mibs_dir)

        if self.mibs_custom_dir:
            t.log('DEBUG', "Created Object Identity with custom mib directory: "+self.mibs_custom_dir)
            object_identity = object_identity.addMibSource(self.mibs_custom_dir)
        if value:
            object_type = ObjectType(object_identity, value)
        else:
            object_type = ObjectType(object_identity)
        return object_type
Exemple #2
0
    def getStrOidByNumOid(self, num_oid):
        try:
            num_oid = self.cleanNumOid(num_oid)
            num_segment_count = len(num_oid.split('.'))  # verification later

            x = ObjectIdentity(num_oid)
            x.resolveWithMib(self.mibView)
            str_oid = str.join('.', x.getLabel())

            str_segment_count = len(str_oid.split('.'))

            # Ensure the check allows for oids ending with '.0' denoting
            #   scaler value, which is non-named segment
            if (num_segment_count
                    == str_segment_count) or (num_segment_count
                                              == str_segment_count + 1):
                return str_oid
            else:
                return None
        except Exception as e:
            # Not all OIDs can be decoded, esp if the MIBs have not been loaded
            print(e)
            return None