def set_by_name(self, obj_name, value, idx=(0, )): """Does a SNMP SET request. See `Get` for more information on possible OID notations. Automatic converting to the SNMP type expected by the remote system is only supported for OIDs for which there is a MIB describing it. If you want to use an OID which is not described by a MIB, you'll have to use the `Set XXX`-keyword or `Convert To XXX`-keyword. The optional `idx` is appended to the OID (defaults to `.0`). Example: | Set | SNMPv2::sysDescr | New System Description | """ if self._active_connection is None: raise RuntimeError('No transport host set') mibViewCtl = view.MibViewController(self._active_connection.builder) objIdentity = ObjectIdentity(self.DTM_MIB_LIB_NAME, obj_name) objIdentity.resolveWithMib(mibViewCtl) oid = '.' + str(objIdentity.getOid()) idx = utils.parse_idx(idx) oid = utils.parse_oid(oid) + idx self._set((oid, value))
def get_oid_by_name(self, *names): """get oid from custom names. """ if len(names): self._info('get_oid_by_name %s' % ' '.join(list(names))) mibViewCtl = view.MibViewController( self._active_connection.builder) objIdentity = ObjectIdentity(*names) objIdentity.resolveWithMib(mibViewCtl) return '.' + str(objIdentity.getOid())
def get_value_by_name2(self, idx, *names): """get value from custom names direcly. """ if len(names): self._info('get_oid_by_name %s' % ' '.join(list(names))) mibViewCtl = view.MibViewController( self._active_connection.builder) objIdentity = ObjectIdentity(*names) objIdentity.resolveWithMib(mibViewCtl) oid = '.' + str(idx) + '.' + str(objIdentity.getOid()) return self._get(oid)
def set_many_by_name(self, *name_value_pairs): """ Does a SNMP SET request with multiple values. Set one or more values simultaneously. See `Set` for more information about the OID and possible value. After each value, you can give an index (`idx`, see example below) which is appended to the OIDs. By default the index is `.0`. Examples: | Set Many | SNMPv2::sysDescr | New System Description | | | ... | SNMPv2-MIB::sysName | New System Name | | | Set Many | IF-MIB::ifDescr | IF1 Description | idx=1 | | ... | IF-MIB::ifDescr | IF2 Description | idx=2 | """ if self._active_connection is None: raise RuntimeError('No transport host set') args = list(name_value_pairs) oid_values = list() try: while len(args): obj_name = args.pop(0) mibViewCtl = view.MibViewController( self._active_connection.builder) objIdentity = ObjectIdentity(self.DTM_MIB_LIB_NAME, obj_name) objIdentity.resolveWithMib(mibViewCtl) oid = '.' + str(objIdentity.getOid()) value = args.pop(0) possible_idx = args[0] if len(args) > 0 else '' if possible_idx.startswith('idx='): idx = args.pop(0)[4:] else: idx = (0, ) idx = utils.parse_idx(idx) oid = utils.parse_oid(oid) + idx oid_values.append((oid, value)) except IndexError: raise RuntimeError('Invalid Object Name/value(/index) format') if len(oid_values) < 1: raise RuntimeError( 'You must specify at least one Object Name/value pair') self._set(*oid_values)
def get_by_name(self, obj_name, idx=(0, )): """Does a SNMP GET request for the specified 'obj_name'. The optional `idx` can be specified as tuple or as a string and defaults to `.0`. Examples: | ${value}= | Get | SNMPv2-MIB::sysDescr | | | ${value}= | Get | .1.3.6.1.2.1.1.1 | | | ${value}= | Get | .iso.org.6.internet.2.1.1.1 | | | ${value}= | Get | sysDescr | | | ${value}= | Get | ifDescr | 2 | """ mibViewCtl = view.MibViewController(self._active_connection.builder) objIdentity = ObjectIdentity(self.DTM_MIB_LIB_NAME, obj_name) objIdentity.resolveWithMib(mibViewCtl) oid = '.' + str(objIdentity.getOid()) return self._get(oid, idx)