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
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