Pysnmp - 基本设置示例

时间:2015-06-05 09:35:28

标签: python snmp pysnmp

我正在尝试通过与pysnmp库的SNMP通信执行基本的set命令, 我的代码如下:

def snmp_set(self, oid, instance, value):

        errorIndication, errorStatus, errorIndex, varBinds = self.cmdGen.setCmd(
            cmdgen.CommunityData('public'),
            cmdgen.UdpTransportTarget((self.ip_address, 161)),
            ((oid+'.'+instance), rfc1902.Unsigned32(value))
        )

        # Check for errors and print out results
        if errorIndication:
            print(errorIndication)
        else:
            if errorStatus:
                print('%s at %s' % (
                    errorStatus.prettyPrint(),
                    errorIndex and varBinds[int(errorIndex)-1] or '?'
                    )
                )
            else:
                for name, val in varBinds:
                    print('%s = %s' % (name.prettyPrint(), val.prettyPrint()))

我得到以下错误消息:

  

noaccess下' at(ObjectName(1.3.6.1.4.1.5835.5.2.6000.1.1.1.1.5.0),Gauge32(1350))

当我在同一个oid和同一个实例(0)上尝试get命令时,一切正常,我得到的值超出了我想要的MIB值。

所以我不明白为什么我的set命令不起作用,我尝试了http://pysnmp.sourceforge.net/的所有例子,没人工作。

我尝试将cmdgen.CommunityData('public')替换为'private'而不是'public',然后我收到'genError'错误,而不是'noAccess'

我还尝试使用cmdgen.UsmUserData('usr-md5-des', 'authkey1', 'privkey1'),但后来收到unknownUserName消息。对于我的get命令,我使用cmdgen.CommunityData('public')并且它工作正常。

0 个答案:

没有答案