snmp - 如何使用 SNMPv3 从思科交换机提取每个 VLAN 的 MAC 地址?
问题描述
我想提取交换机知道的所有 MAC 地址。我在 SNMPv2 中找到
此命令从 linux 终端成功
snmpwalk -v2c -c SNMPCommunity@10 10.10.10.10 .1.3.6.1.2.1.17.4.3.1.1
此命令需要插入“@10”,但我不知道在哪里。
snmpwalk -v3 -l authPriv -u username -a SHA -A authpriv -x DES -X authkey 10.10.10.10 .1.3.6.1.2.1.17.4.3.1.1
上述命令仅从 VLAN1 中提取 MAC 地址。我尝试了 username@10 - 但后来我得到了错误的用户名
大图。我正在尝试使用 pysnmp 使用 python 脚本来拉取它们。除了最后一部分,我一切正常。
解决方案
要使用非默认 SNMP 上下文名称获取 pysnmp,只需将上下文名称以ContextName对象的形式作为contextData参数传递给nextCmd()
.
from pysnmp.hlapi import *
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
UsmUserData('usr-md5-des', 'authkey1', 'privkey1'),
UdpTransportTarget(('demo.snmplabs.com', 161)),
ContextData(contextName='vlan-10'),
ObjectType(ObjectIdentity('1.3.6.1.2.1.17.4.3.1.1')))
)
推荐阅读
- sql - Laravel 测试后重置数据库
- c# - 为什么在 Xamarin.Forms 中订阅事件时出现 NullReferenceException,但仅在 iOS 上?
- c++ - C++:存储数据还是持续读取数据效率更高
- javascript - 从集合中单独将数据存储在 redux 中
- makefile - Make 不喜欢 $(addprefix a,b)
- node.js - Node.js 主线程阻塞
- c# - VideoDeviceController:曝光控制与曝光。哪个更好?
- reactjs - 使用 react final-form 为什么 meta.touched 对于第三方组件总是错误的?
- javascript - 'esnext.array' 编译器选项不允许访问 Array.prototype.flat()
- cordova - 如何为 Cordova 安装 FastCanvas 插件?