예제 #1
0
    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))
예제 #2
0
    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())
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
    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)