需要使用 python 从 d-link 交换机获取 mac 地址表
Need to get mac address tables from d-link switches with python
可能我应该使用 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
我建议从这样的脚本开始。它没有被调试,所以如果你把它修复到一个完全工作的状态 - 请发表评论,我会更新代码以造福他人。
from pysnmp.hlapi import *
for (errorIndication,
errorStatus,
errorIndex,
varBindTable) in bulkCmd(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('demo.snmplabs.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:]}
)
可能我应该使用 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
我建议从这样的脚本开始。它没有被调试,所以如果你把它修复到一个完全工作的状态 - 请发表评论,我会更新代码以造福他人。
from pysnmp.hlapi import *
for (errorIndication,
errorStatus,
errorIndex,
varBindTable) in bulkCmd(SnmpEngine(),
CommunityData('public'),
UdpTransportTarget(('demo.snmplabs.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:]}
)