5

使用 SNMP,如何获取连接到交换机每个端口的设备的 MAC 地址?我们正在使用 HP ProCurve 开关。

我尝试使用 OID dot1dTpFdbPort 但这似乎给了我与交换机通信的每个设备的 MAC 地址,而不仅仅是连接到它。

我正在尝试在列表中找到可以为我提供端口 1-48 的 OID,并且对于每个端口,连接到该端口的设备的 MAC(或 IP 地址)。

谢谢!

4

5 回答 5

4

非常感谢 raz3r 的回答。它就像一个魅力!

从您的 linux 服务器:

$ snmpwalk -v 1 -c 公共 xxx.xxx.xxx.xxx 1.3.6.1.2.1.17.4.3.1.2 | grep“整数:11”

(端口号 11)

将返回 :

SNMPv2-SMI::mib-2.17.4.3.1.2.44.118.138.64.143.95 = 整数:11
SNMPv2-SMI::mib-2.17.4.3.1.2.56.170.60.108.174.57 = 整数:11
SNMPv2-SMI::mib -2.17.4.3.1.2.104.181.153.172.54.237 = 整数:11
SNMPv2-SMI::mib-2.17.4.3.1.2.120.172.192.143.226.236 = 整数:11
SNMPv2-SMI::mib-2.17.4.3.1.2 .124.195.161.20.109.76 = 整数:11
SNMPv2-SMI::mib-2.17.4.3.1.2。152.75.225.59.127.180 = 整数:11

然后您可以执行此操作来查找连接的 Mac 地址:

$ snmpwalk -v 1 -c 公共 xxx.xxx.xxx.xxx 1.3.6.1.2.1.17.4.3.1.1 | grep "152.75.225.59.127.180"

返回mac地址:

SNMPv2-SMI::mib-2.17.4.3.1.1.152.75.225.59.127.180 = 十六进制字符串:98 4B E1 3B 7F B4

您可以制作一个 script.sh 来执行此操作...

于 2013-04-24T15:45:48.080 回答
1

你快到了:) dot1dTpFdbPort 正是你要找的东西,你唯一需要的是一个指向真实端口索引的链接。

首先,取 dot1dTpFdbPort 给出的值。

现在使用您之前获取的值查询 dot1dBasePortIfIndex。

让我们举个例子:

snmpwalk -v 2c -c xxx 192.168.x.x 1.3.6.1.2.1.17.4.3.1.1

SNMPv2-SMI::mib-2.17.4.3.1.1.0.2.253.255.213.15 = Hex-STRING: XX XX XX XX XX XX

snmpwalk -v 2c -c xxx 192.168.x.x 1.3.6.1.2.1.17.4.3.1.2

SNMPv2-SMI::mib-2.17.4.3.1.2.0.2.253.255.213.15 = INTEGER: 22

# Notice the 22 :)

snmpwalk -v 2c -c xxx 192.168.x.x 1.3.6.1.2.1.17.1.4.1.2.22

SNMPv2-SMI::mib-2.17.1.4.1.2.22 = INTEGER: 10122
于 2012-09-03T12:54:05.690 回答
0

Netsnmpsnmptable在这里可能更具可读性。

示例dot1dTpFdb表检索:

snmptable  -M +.  -m +ALL -v 2c -c public  -Ci  192.168.x.x    BRIDGE-MIB::dot1dTpFdbTable
   index dot1dTpFdbAddress dot1dTpFdbPort dot1dTpFdbStatus
'..?...'   98:4B:E1:3B:7F:B4           13          learned
// other rows snipped for brevity

示例dot1dBasePort表检索:

snmptable  -M +.  -m +ALL -v 2c -c public  -Ci  192.168.x.x   BRIDGE-MIB::dot1dBasePortTable
 index dot1dBasePort dot1dBasePortIfIndex    dot1dBasePortCircuit dot1dBasePortDelayExceededDiscards dot1dBasePortMtuExceededDiscards
    13            13                10113 SNMPv2-SMI::zeroDotZero                                  0                                0
// other rows snipped for brevity
于 2015-01-14T12:17:12.897 回答
0

试试这个直接在 HEX 中获得 MAC 地址:

snmpwalk -OX -v 2c -c public xxx.xxx.xxx.xxx 1.3.6.1.2.1.17.4.3.1.2 
于 2015-01-14T11:24:26.237 回答
0
#!/bin/bash
# This should iterate thru each active port. 
HOST=xxx.xxx.xxx.xxx ## Change this to the ip address of the switch
echo
snmpwalk -v 1 -c public "$HOST" 1.3.6.1.2.1.17.4.3.1.1 | grep "$" |awk -- '{print $4":"$5":"$6":"$7":"$8":"$9}'
于 2020-12-03T19:15:37.537 回答