snmpwalk -v2c -c <community> <SwitchIP> .1.3.6.1.2.1.17.4.3.1.2
我希望将生成的arp表定向到我的服务器。
我的问题是我不知道确切地在哪里运行命令,或将输出保存到文件中。
#1 楼
似乎有些混乱...您正在询问ARP表,并且您正在使用OID.1.3.6.1.2.1.17.4.3.1.2
;但是,该OID实际上是用于交换机中的mac-address表的。我假设您知道如何登录到Ubuntu服务器,并且已经安装了
NET-SNMP
...请让我知道是否需要有关执行此操作(有关在Linux中加载MIB的提示,请参阅此问题)。我的一些示例假设您已在服务器上加载了MIB ...如果您未在本地加载MIB,只需删除命令中的-m <mib-name>
选项。这个答案...我希望使用SNMP进行轮询不是那么复杂... 轮询mac-address表:
如果您真的希望从交换机获取mac-address表,那么请记住您已经更改您用来轮询的社区字符串...应该采用
<commity@vlan>
的形式...您轮询的每个VLAN需要一个不同的社区。在下面的示例中,在172.16.1.210处的交换机配置了
snmp-server community public ro
,然后使用来自BRIDGE-MIB的dot1dTpFdbPort轮询vlan-10中的mac-address表。[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public@10 -OXsq 172.16.1.210 \
.1.3.6.1.2.1.17.4.3.1.2
dot1dTpFdbPort[0:6:53:fe:39:e0] 52
dot1dTpFdbPort[0:1d:a1:cd:53:46] 52
dot1dTpFdbPort[0:30:1b:bc:a7:d7] 52
dot1dTpFdbPort[0:80:c8:0:0:0] 52
dot1dTpFdbPort[38:ea:a7:6d:2e:8e] 52
dot1dTpFdbPort[80:ee:73:2f:b:40] 52
[mpenning@tsunami ~]$
在上面的输出中,52是
dot1dBasePort
的值,这是MIB使用的数字索引dot1dTp表。要将其转换为普通的接口名称,您必须将其映射到ifName ... BRIDGE-MIB使用dot1dBasePortIfIndex来实现......交换机是通过vlan-10中的FastEthernet 0/48获悉的。 CISCO-VTP-MIB中的vtpVlanState ... [mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public@10 -m BRIDGE-MIB 172.16.1.210 \
.1.3.6.1.2.1.17.1.4.1.2
BRIDGE-MIB::dot1dBasePortIfIndex.52 = INTEGER: 10048
[mpenning@tsunami ~]$
[mpenning@tsunami ~]$ snmpget -v 2c -c public 172.16.1.210 ifName.10048
IF-MIB::ifName.10048 = STRING: Fa0/48
[mpenning@tsunami ~]$
请记住,VLAN 1002-1005是您不应该轮询的内部Cisco VLAN。如果您确实要从交换机获取ARP表,则需要轮询atPhysAddress ...
[mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq -m CISCO-VTP-MIB 172.16.1.210 \
.1.3.6.1.4.1.9.9.46.1.3.1.1.2
vtpVlanState[1][1] operational
vtpVlanState[1][10] operational
vtpVlanState[1][1002] operational
vtpVlanState[1][1003] operational
vtpVlanState[1][1004] operational
vtpVlanState[1][1005] operational
[mpenning@tsunami ~]$
将命令输出保存到文件中
我们正在研究超出此站点正常范围的区域,但是要将上面的ARP表保存到
.1.3.6.1.4.1.9.9.46.1.3.1.1.2
中的文件中,您需要在上面/tmp/S01_ARP.txt
的末尾添加> /tmp/S01_ARP.txt
... [mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq 172.16.1.210 \
.1.3.6.1.2.1.3.1.1.2
atPhysAddress[10][1.172.16.1.5] "80 EE 73 2F 0B 40 "
atPhysAddress[10][1.172.16.1.25] "38 EA A7 6D 2E 8E "
atPhysAddress[10][1.172.16.1.32] "BC 51 FE 50 16 F8 "
atPhysAddress[10][1.172.16.1.200] "00 06 53 FE 39 E0 "
atPhysAddress[10][1.172.16.1.210] "00 18 BA 51 5B 41 "
[mpenning@tsunami ~]$
如上所示,您可以在Linux中使用
snmpbulkwalk
从文本文件获取所有输出。注意:某些linux发行版(ahem ... CentOS)每月清理一次cat
目录。您应该在linux中使用/tmp
目录来存储文件。我不记得Ubuntu清理过HOME
了,但是为了安全起见,我避免在这里存储东西。关于SNMP的其他说明... ,则应避免在
/tmp
命令中使用-m <mib-name>
标志。加载MIB允许您使用OID名称(而不是长点号)进行轮询。关于上面的SNMP命令的CLI ... [mpenning@tsunami ~]$ snmpbulkwalk -v 2c -c public -OXsq 172.16.1.210 \
.1.3.6.1.2.1.3.1.1.2 > /tmp/S01_ARP.txt
[mpenning@tsunami ~]$ cat /tmp/S01_ARP.txt
atPhysAddress[10][1.172.16.1.5] "80 EE 73 2F 0B 40 "
atPhysAddress[10][1.172.16.1.25] "38 EA A7 6D 2E 8E "
atPhysAddress[10][1.172.16.1.32] "BC 51 FE 50 16 F8 "
atPhysAddress[10][1.172.16.1.200] "00 06 53 FE 39 E0 "
atPhysAddress[10][1.172.16.1.210] "00 18 BA 51 5B 41 "
[mpenning@tsunami ~]$
评论
答案很有用,我想在IP地址之前了解-OXsq的含义
– sosytee
13年8月21日在12:16
如果您在Linux主机上并安装了Net-SNMP,请检查man snmpcmd。否则,您可以在以下位置找到此信息:net-snmp.sourceforge.net/docs/man/snmpcmd.html
–约翰·詹森(John Jensen)
13年8月21日在13:00
@MikePennington:您可以在OID ipNetToMediaPhysAddress和ifPhysAddress上发表评论吗?特别是这些表和atPhysAddress之间的语义差异?
– mormegil
2014年11月21日20:48
除上述内容外,您还可以在该Ubuntu服务器上安装netDB,并在多个设备的ARP表上获得更多可见性。 netdbtracking.sourceforge.net
–库纳尔
15年2月16日在21:57
评论
嗨,向数据库添加信息是题外话...超级用户是询问您是否需要修改数据库的好地方。如果您不介意删除问题的那一部分,我们可以重新打开它。我已经修改了我的问题
“将ARP表放入服务器”是什么意思?
Arp表将由交换机生成,但我希望从服务器查看它们
如果我们告诉您如何将它们放在文本文件中怎么办...可以吗?