如何同时对多个OID执行SNMP命令?

2024-06-30 16:08:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个MIB表,我想编辑它。下面的代码可以很好地执行任务。我想知道的是,是否有一种方法可以在一个集合命令中完成这一切

main_Status_OID = '1.3.6.1.4.1.4515.1.3.23.1.1.1.0'

# Set the OIDs according to the Level argument
if Level == 1:
    Server_IP_OID = '1.3.6.1.4.1.4515.1.3.23.1.1.2.1.2.1'
    Secret_OID = '1.3.6.1.4.1.4515.1.3.23.1.1.2.1.6.1'
    Status_OID = '1.3.6.1.4.1.4515.1.3.23.1.1.2.1.4.1'
elif Level == 2:
    Server_IP_OID = '1.3.6.1.4.1.4515.1.3.23.1.1.2.1.2.2'
    Secret_OID = '1.3.6.1.4.1.4515.1.3.23.1.1.2.1.6.2'
    Status_OID = '1.3.6.1.4.1.4515.1.3.23.1.1.2.1.4.2'
else:
    return -1

# Set the Main RADIUS Authentication Enable/Disable field
g = setCmd(SnmpEngine(), 
           CommunityData('admin', mpModel=1),
           UdpTransportTarget((Device_IP, 161)), 
           ContextData(),
           ObjectType(ObjectIdentity(main_Status_OID), Integer32(main_Status)))

next(g)

# Set the IP Address field of the Primary/Secondary RADIUS Server
g = setCmd(SnmpEngine(), 
           CommunityData('admin', mpModel=1),
           UdpTransportTarget((Device_IP, 161)), 
           ContextData(),
           ObjectType(ObjectIdentity(Server_IP_OID), IpAddress(Server_IP)))

next(g)

# Set the Shared Secret field of the Primary/Secondary RADIUS Server
g = setCmd(SnmpEngine(), 
           CommunityData('admin', mpModel=1),
           UdpTransportTarget((Device_IP, 161)), 
           ContextData(),
           ObjectType(ObjectIdentity(Secret_OID), OctetString(Secret)))

next(g)

# Set the Admin Status field of the Primary/Secondary RADIUS Server
g = setCmd(SnmpEngine(), 
           CommunityData('admin', mpModel=1),
           UdpTransportTarget((Device_IP, 161)), 
           ContextData(),
           ObjectType(ObjectIdentity(Status_OID), Integer32(Status)))

next(g)

我曾尝试将ObjectType转换为(ObjectIdentity(OID),Value)对的元组,但遇到了一些错误。是否可以将所有“独立”set命令缩减为一个4对的集合命令?在

顺便说一句,代码块顶部的if用于设置OID值,以便将I设置到表中的右侧行


Tags: theipfieldsecretserveradminstatusoid
1条回答
网友
1楼 · 发布于 2024-06-30 16:08:20

来自pysnmp prospective您surely can

...
g = setCmd(SnmpEngine(), 
    CommunityData('admin'),
    UdpTransportTarget((Device_IP, 161)), 
    ContextData(),
    ObjectType(ObjectIdentity(main_Status_OID), Integer32(main_Status))),
    ObjectType(ObjectIdentity(Server_IP_OID), IpAddress(Server_IP))),
    ObjectType(ObjectIdentity(Status_OID), Integer32(Status))
)

next(g)

希望您的SNMP代理也支持这一点。在

相关问题 更多 >