需要用python从d-link交换机获取mac地址表

问题描述 投票:0回答:1

也许我应该使用 SNMP v2c 和 pysnmp,但无法弄清楚如何清楚地做到这一点,可能我需要一个 mac 数组字典的端口列表。 无论如何,我将把它推送到 mongodb 中,然后获取具有 mac 地址的端口号。

这是提供该信息的 shell 命令

snmpwalk -O0sUX -v2c -Cc -c public 10.77.10.8 BRIDGE-MIB::dot1dTpFdbPort

更新:https://github.com/edikmkoyan/portmatrix/blob/master/portmatrix.py

pysnmp
1个回答
2
投票

我建议从这样的脚本开始。它没有经过调试,因此如果您将其修复为完全工作状态 - 请发表评论,我会更新代码以使其他人受益。

from pysnmp.hlapi import *

for (errorIndication,
     errorStatus,
     errorIndex,
     varBindTable) in bulkCmd(SnmpEngine(),
                              CommunityData('public'),
                              UdpTransportTarget(('demo.pysnmp.com', 161)),
                              ContextData(),
                              0, 25,
                              ObjectType(ObjectIdentity('BRIDGE-MIB', 'dot1dTpFdbPort')),
                              lexicographicMode=False):
    if errorIndication:
        Exception(errorIndication)
    elif errorStatus:
        Exception(errorStatus)
    else:
        for varBinds in varBindTable:
            for varBind in varBinds:
                # imaginary MongoDB document mapping port-ID -> MAC
                db.portsAndMacs.insert_one(
                    {varBind[1].prettyPrint(): varBind[0].prettyPrint()[-17:]}
                )
            
© www.soinside.com 2019 - 2024. All rights reserved.