Exemple #1
0
    def sgetnext(self, root):
        req = self._create_request(SNMP_MSG_GETNEXT)
        oid = mkoid(root)
        lib.snmp_add_null_var(req, oid, len(oid))

        response = netsnmp_pdu_p()
        if lib.snmp_synch_response(self.sess, req, byref(response)) == 0:
            _raise_on_protocol_error(response)
            result = dict(getResult(response.contents))
            lib.snmp_free_pdu(response)
            return result
        else:
            _raise_on_error(self.sess.contents.s_snmp_errno)
Exemple #2
0
    def sset(self, oid, data_type, value):
        req = self._create_request(SNMP_MSG_SET)
        oid = mkoid(oid)

        converter = CONVERTER_MAP[data_type]
        data, size = converter(value)
        lib.snmp_pdu_add_variable(req, oid, len(oid), data_type, data, size)

        response = netsnmp_pdu_p()
        if lib.snmp_synch_response(self.sess, req, byref(response)) == 0:
            _raise_on_protocol_error(response)
            result = dict(getResult(response.contents))
            lib.snmp_free_pdu(response)
            return result
        else:
            _raise_on_error(self.sess.contents.s_snmp_errno)
Exemple #3
0
    def sgetbulk(self, nonrepeaters, maxrepetitions, oids):
        req = self._create_request(SNMP_MSG_GETBULK)
        req = cast(req, POINTER(netsnmp_pdu))
        req.contents.errstat = nonrepeaters
        req.contents.errindex = maxrepetitions
        for oid in oids:
            oid = mkoid(oid)
            lib.snmp_add_null_var(req, oid, len(oid))

        response = netsnmp_pdu_p()
        if lib.snmp_synch_response(self.sess, req, byref(response)) == 0:
            _raise_on_protocol_error(response)
            result = getResult(response.contents)
            lib.snmp_free_pdu(response)
            return result
        else:
            _raise_on_error(self.sess.contents.s_snmp_errno)
Exemple #4
0
    def sset(self, varbinds):
        """:type varbinds: list[PDUVarbinds]"""
        req = self._create_request(SNMP_MSG_SET)
        for varbind in varbinds:
            oid = mkoid(varbind.oid)
            converter = CONVERTER_MAP[varbind.type]
            data, size = converter(varbind.value)
            lib.snmp_pdu_add_variable(req, oid, len(oid), varbind.type, data, size)

        response = netsnmp_pdu_p()
        if lib.snmp_synch_response(self.sess, req, byref(response)) == 0:
            _raise_on_protocol_error(response)
            result = dict(getResult(response.contents, self._log))
            lib.snmp_free_pdu(response)
            return result
        else:
            _raise_on_error(self.sess.contents.s_snmp_errno)
Exemple #5
0
def asn_object_id(value):
    value = mkoid(OID(value))
    return byref(value), sizeof(value)