如何获取连接机器的SNMP设备的IP和Mac。
ARP缓存未提供正确的详细信息。
Linux shell命令的示例(在编写时没有其他语言或Windows的标记)
假设您要查询的计算机确实运行SNMP守护程序(通常是在Linux下的Net-SNMP中snmpd),并且您知道如何/允许它与它通信(具有各种社区名称或用户名/密码的版本1,2c或3) / encoding for v3)您可以发出以下SNMP请求:
为了测试,我在CentOS 7虚拟机上启动了一个snmpd,其主要地址是192.168.174.128。
我选择端口1610超过传统的161,以便不sudo或setcap(snmpd)。 snmpd.conf文件内容超出了此问题的范围。
这是IP的第一个
snmptable -v 2c -c private 192.168.174.128:1610 ipAddrTable
SNMP table: IP-MIB::ipAddrTable
ipAdEntAddr ipAdEntIfIndex ipAdEntNetMask ipAdEntBcastAddr ipAdEntReasmMaxSize
127.0.0.1 1 255.0.0.0 0 ?
192.168.122.1 3 255.255.255.0 1 ?
192.168.174.128 2 255.255.255.0 1 ?
MAC的第二个命令(仅打印3列)
snmptable -v 2c -c private 192.168.174.128:1610 ifTable | awk -c '{print $1 "\t" $2 "\t\t" $6}'
SNMP table:
ifIndex ifDescr ifPhysAddress
1 lo up
2 ens33 0:c:29:53:aa:c6
3 virbr0 52:54:0:e6:6b:2f
4 virbr0-nic 52:54:0:e6:6b:2f
当我们在CentOS 7下检查时,我们得到了
ifconfig
ens33: ... mtu 1500
inet 192.168.174.128 netmask 255.255.255.0 broadcast 192.168.174.255
inet6 ...
ether 00:0c:29:53:aa:c6 netmask 255.0.0.0
...
lo: ... mtu 65536
inet 127.0.0.1
...
virbr0: ... mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:e6:6b:2f ...
...
Bonus shell命令:
snmptranslate -Oaf IF-MIB::ifTable
.iso.org.dod.internet.mgmt.mib-2.interfaces.ifTable
和
snmptranslate -Oaf IP-MIB::ipAddrTable
.iso.org.dod.internet.mgmt.mib-2.ip.ipAddrTable
我不知道为什么/如果有一个表同时包含这两个信息。